字串操作整理
字串操作
- + 字串連線操作
- * 字串複製操作
- [] 字串索引操作,通過索引訪問指定位置的字元,索引從0開始
- [::] 字串取片操作
- 完整格式:[開始索引:結束索引:間隔值]
- [:結束索引] 從開頭擷取到結束索引之前
- [開始索引:] 從開始索引擷取到字串的最後
- [開始索引:結束索引] 從開始索引擷取到結束索引之前
- [:] 擷取所有字串
- [開始索引:結束索引:間隔值] 從開始索引擷取到結束索引之前按照指定的間隔擷取字元
- r'字串' 元字串,所有字串中的轉義字元不會轉義,當作普通字元
var1 = '012345678'
var2 = 'abcdefghi'
print(var1)
print(var1 + var2)
複製程式碼
012345678
012345678abcdefghi
複製程式碼
print(var1)
print(var1 * 3)
複製程式碼
012345678
012345678012345678012345678
複製程式碼
print(var1)
print(var1[0])
print(var1[-1])
複製程式碼
012345678
0
8
複製程式碼
print(var1)
print(var1[0:3])
複製程式碼
012345678
012
複製程式碼
print(var1)
print(var1[0:6:2])
print(var1[0::2])
複製程式碼
012345678
024
02468
複製程式碼
print(var1)
print(var1[:4])
複製程式碼
012345678
0123
複製程式碼
print(var1)
print(var1[-1:])
複製程式碼
012345678
8
複製程式碼
print(var1)
print(var1[1:4])
複製程式碼
012345678
123
複製程式碼
print(var1)
print(var1[:])
複製程式碼
012345678
012345678
複製程式碼
var2 = r'這是\n第一個\'字元\"串'
print(var2)
複製程式碼
這是\n第一個\'字元\"串
複製程式碼
var1 = '012345678'
print('var1:'.ljust(15,' '),var1)
print('var1[::-1]:'.ljust(15,' '),var1[::-1])
print('var1[-1:2:-1]:'.ljust(15,' '),var1[-1:2:-1])
print('var1[1:4:-1]:'.ljust(15,' '),var1[1:4:-1])
print('var1[1:1]:'.ljust(15,' '),var1[1:1])
print('var1[:2:-1]:'.ljust(15,' '),var1[:2:-1])
print('var1[3::-1]:'.ljust(15,' '),var1[3::-1])
複製程式碼
var1: 012345678
var1[::-1]: 876543210
var1[-1:2:-1]: 876543
var1[1:4:-1]:
var1[1:1]:
var1[:2:-1]: 876543
var1[3::-1]: 3210
複製程式碼
字串函式
- var1 = 'Hello World'
- var.capitalize() 首字母大寫,其他字母變小寫,返回處理後的字串,原字串不變 Hello world,如果首字母是*、空格等字元,則將其他字元至為小寫
- var.title() 每個單詞首字母大寫,其餘字母變小寫,原字串不變 Hello World,如果首字母是*、空格等字元,依然將首個字母大寫 *Hello World
- var.upper() 所有字母轉換成大寫,沒有引數,返回處理後的字串,原字串不變 HELLO WORLD
- var.lower() 所有字母轉換為小寫,沒有引數,返回處理後的字串,原字串不變 hello world
- var.swapcase() 大寫轉換為小寫,小寫轉換為大寫,沒有引數,返回處理後的字串,原字串不變 HELLO WORLD
- len(var) 計算容器長度,引數為要求長度(元素個數)的(字串、列表、元組、集合【會去除重複資料】、字典),返回整數值
- var = 'efefefe'
- var.count('efe',0,-1) = 1計算指定字串出現的次數,字串.count(查詢字串[,開始索引[,結束索引]]),嚴格區分大小寫,包含開頭不包含結尾
- var.find('lo',3,7) 查詢某個字串在字串指定範圍中第一次出現的位置,找不到返回-1,指定範圍找到位置仍是在原字串中的位置
- var.index('lo',3,7)與find功能相同,找不到時報錯
var1 = ' Hello World'
print(var1.capitalize())
print(var1)
複製程式碼
hello world
Hello World
複製程式碼
var1 = ' *hello worlD'
print(var1.title())
print(var1)
複製程式碼
*Hello World
*hello worlD
複製程式碼
var1 = ' *hello worlD'
print(var1.upper())
print(var1)
複製程式碼
*HELLO WORLD
*hello worlD
複製程式碼
var1 = ' *hello worlD'
print(var1)
print(var1.lower())
print(var1)
複製程式碼
*hello worlD
*hello world
*hello worlD
複製程式碼
var1 = ' *hello worlD'
print(var1)
print(var1.swapcase())
print(var1)
複製程式碼
*hello worlD
*HELLO WORLd
*hello worlD
複製程式碼
var1 = ' *hello worlD'
print(var1)
print(len(var1),type(len(var1)))
print(var1)
print('列表:',len([1,2,3,4,2]))
print('元組:',len((1,2,3,4,2)))
print('集合:',len({1,2,3,4,2}))
print('字典:',len({1:2,3:4}))
複製程式碼
*hello worlD
13 <class 'int'>
*hello worlD
列表: 5
元組: 5
集合: 4
字典: 2
複製程式碼
var1 = 'hello worlD'
print(var1)
print(var1.count('l'))
print(var1[2:7])
print(var1.count(' ',2,7))
print(var1.count('l',2,7))
var = 'efefefe'
print(var.count('efe',0,-1))
複製程式碼
hello worlD
3
llo w
1
2
1
複製程式碼
var1 = 'hello worlD'
print(var1)
print(var1.find('lo'))
print(var1.find('L'))
print(var1[3:7])
print(var1.find('l',3,7))
複製程式碼
hello worlD
3
-1
lo w
3
複製程式碼
print(var1)
print(var1.index('l'))
print(var1[3:7])
print(var1.index('l',3,7))
print(var1.index('d',3,7))
複製程式碼
hello world
2
lo w
3
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-54-5b7535a7e914> in <module>()
5 print(var1.index('l',3,7))#查詢指定範圍內的指定字元的第一次出現的位置
6 #該位置是在原字串中的位置
----> 7 print(var1.index('d',3,7))
ValueError: substring not found
複製程式碼
檢測類函式返回布林型
- var.satrtswith('He') 檢測字串是否以某個字串開頭的,區分大小寫
- var.endswith('ld') 檢測字串是否以某個字串結尾的,區分大小寫
- var.isupper() 檢測字串是否全部大寫
- var.islower() 檢測字串是否全部小寫
- var.istitle() 檢測字串是否符合title格式,符合的格式('Hello World',' Hello World','*Hello World','Hello&World')
- var.isalnum() 檢測是否由數字、字元(包含文字字母,不包含空格等字元)
- var.isalpha() 檢測字串是否以字元(包含漢字、字母組成,不包含空格等字元)
- var.isdigit() 檢測字串是否以10進位制數字組成
- var.isnumeric() 檢測字串是否以數字組成
- var.isdecimal() 檢測字串是否以數字組成
- var.isspace() 檢測字串是否以空格組成 #tab也會認為是空格,是否和系統有關?
print(var1.startswith('hel'))
print(var1.startswith('Hel'))
複製程式碼
True
False
複製程式碼
print(var1)
print(var1.endswith('rld'))
print(var1.endswith('rlD'))
複製程式碼
hello world
True
False
複製程式碼
print(var1.isupper())
複製程式碼
False
複製程式碼
print(var1.islower())
複製程式碼
True
複製程式碼
var1 = 'HelloWorld'
print(var1.istitle())
var1 = 'Hello World'
print(var1.istitle())
var1 = '*Hello World'
print(var1.istitle())
var1 = 'Hello*World'
print(var1.istitle())
var1 = 'Hello&World'
print(var1.istitle())
複製程式碼
False
True
True
True
True
複製程式碼
var1 = 'Hello World'
print(var1)
print(var1.isalnum())
print('helloworld'.isalnum())
複製程式碼
Hello World
False
True
複製程式碼
print(var1)
print(var1.isalpha())
print('helloworld'.isalpha())
複製程式碼
Hello World
False
True
複製程式碼
var1 = '3215 436'
print(var1)
print(var1.isdigit())
print('010232'.isdigit())
複製程式碼
3215 436
False
True
複製程式碼
print(var1)
print(var1.isnumeric())
print('132432543'.isnumeric())
複製程式碼
hello world
False
True
複製程式碼
print(var1)
print(var1.isdecimal())
print('132432543'.isdecimal())
複製程式碼
hello world
False
True
複製程式碼
print(var1)
print(var1.isspace())
print(' '.isspace())
複製程式碼
hello world
False
True
複製程式碼
字串分割、填充
- var = ' hello,world '
- var.split(',w') 將字串進行切割操作,返回列表
- var.splitlines(True\False) 按照指定字元(回車\r,\n,\r\n "三引號中的換行")將字串進行切割操作,True保留切割的字元
- 將容器中的字串使用指定的字元進行連線成一個字串,(字串、列表、元組、集合、字典)都可以使用,字典保留key
- var.join(var2、list、tuple、dict),只有一個引數
- var.zfill(10) 0填充函式 125 -—》0000000125 ,引數只有一個,填充後的長度
- var.center(10,'@') 使用指定的字元將字串填充至指定的長度,原字串居中顯示,奇數個字元前面短後面長,引數只能是單個字元,空字元多字元都報錯
- var.ljust(10,'@') 使用指定字元將字串填充至指定的長度,後設資料左對齊,
- var.rjust(10,'@') 使用指定字元將字串填充至指定長度,後設資料右對齊
- var.strip('ab') 去掉左右兩側的指定的字串,不指定字串刪除空格,引數為'ab',則會去除a和b,沒有順序
- var.lstrip('ab') 去掉左側指定的連續的字元,不指定字元刪除空格,同上
- var.rstrip('ab') 去掉右側指定的連續的字元,不指定刪除空格,同上
- var.maketrans() 指定字典
- var.translate() 替換操作
- 使用指定字串替換指定的字串中的字串,1:old、2:new、3:替換的數量0不替換>0替換指定數量的從前向後替換<0所有的
- var.replace('ll','LL',2)
- var = 'abc***abc'
- zd = str().maketrans('abc*','def0') #建立字典
- result = var.translate(zd) #使用字典替換 #不改變原來的字串
var1 = ' hello,world '
print(var1)
print(var1.split(',w',True))
print(var1)
複製程式碼
hello,world
[' hello', 'orld ']
hello,world
複製程式碼
var1 = ' he\rl\r\nlo\nworld '
var2 = ''' he\rl\r\nlo\nwor
ld '''
print(var1)
print(var1.splitlines())
print(var1.splitlines(True))
print('var2:')
print(var2)
print(var2.splitlines())
print(var2.splitlines(True))
複製程式碼
l
lo
world
[' he', 'l', 'lo', 'world ']
[' he\r', 'l\r\n', 'lo\n', 'world ']
var2:
l
lo
wor
ld
[' he', 'l', 'lo', 'wor', 'ld ']
[' he\r', 'l\r\n', 'lo\n', 'wor\n', 'ld ']
複製程式碼
var1 = '*'
var2 = ['a','b','c','d','e']
print(var1)
print(var1.join(var2))
var2 = {'a','b','c','d','e'}
print(var1.join(var2))
var2 = {'a':'b','c':'d'}
print(var1.join(var2))
var2 = ['a','b','c','d','e']
print(''.join(var2))
print(str().join(var2))
var2 = 'abcde'
print(var1.join(var2))
print(var1)
複製程式碼
*
a*b*c*d*e
d*a*c*b*e
a*c
abcde
abcde
*
複製程式碼
var1 = '*'
print(var1.zfill(10))
print(var1)
複製程式碼
000000000*
*
複製程式碼
var1 = '*'
print(var1.center(10,'a'))
print(var1)
複製程式碼
aaaa*aaaaa
*
複製程式碼
var1 = 'a'
print(var1.ljust(10,'*'))
print(var1)
複製程式碼
a*********
a
複製程式碼
var1 = 'a'
print(var1.rjust(10,'*'))
print(var1)
複製程式碼
*********a
a
複製程式碼
var1 = '***a***'
print(var1.strip())
print(var1)
var1 = 'efefefafefefe'
print(var1.strip('ef'))
print(var1)
複製程式碼
***a***
***a***
a
efefefafefefe
複製程式碼
var1 = 'efefefa***'
print(var1.lstrip('ef'))
print(var1)
var1 = 'efefefa***'
print(var1.lstrip('fe'))
print(var1)
複製程式碼
a***
efefefa***
a***
efefefa***
複製程式碼
var1 = 'efefa***efdef'
print(var1.rstrip('fe'))
print(var1)
複製程式碼
efefa***efd
efefa***efdef
複製程式碼
var = 'abc***abc'
zd = str().maketrans('abc*','def0')
result = var.translate(zd)
print(result)
複製程式碼
def000def
複製程式碼