python的字串(String)及其常見操作(方法、函式)
字串(string)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
下標與切片
str[下標],從左向右0→+,從右向左-1→
str[起始:結束:步長],範圍包首不包尾
>>> str="0123456789" #定義一個字串,從0到9,共10個元素 >>> str[0] #取出0號下標的元素 '0' >>> str[10] #嘗試取出10號下標的元素 Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> str[10] IndexError: string index out of range #報錯,下標越界,不存在str[10] >>> str[9] #下標從左向右數,第一個為0號下標,第N個元素下標為N-1 '9' >>> str[-1] #下標從右向左數,第一個為-N號下標,倒數最後一個為-1 '9' >>> str[-10] '0'
注意:對字串的所有操作,原始資料(即原字串)未發生變化 !!!
對原字串操作會返回一個操作後的資料, 可以使用變數去接受資料
常見方法
查詢
.find(str),str存在字串中返回下標索引值,不存在返回-1
.rfind(str),str存在字串中,查詢順序為從右向左,其它與find一樣
.index(str),存在返回下標索引值,不存在報異常
.rindex(str),存在返回下標索引值,查詢順序為從右向左,其它與index一樣
.count(str[,起始,結束]),查詢指定字串中該字元出現的總次數
>>> str='123aaabcdeeff' #定義一個字串用於測試字串方法的使用
>>> str.find(0) #嘗試查詢整數0是在於字串中的下標
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
str.find(0)
TypeError: must be str, not int
#字串操作,查詢操作物件必須為字串型別,所以元素應用‘’標識
>>> str.find('1') #查詢字元1在指定字串中首次出現的下標
0 #返回的下標為0
>>> str.find('a') #查詢字元a在指定字串中首次出現的下標
3 #返回的下標為3
>>> str.rfind('a') #反向查詢(即從末尾向前查詢),字元a首次出現在字串中的下標
5 #返回的下標為5
>>> str.index('0') #使用index查詢時,字元不存在時,會報錯
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
str.index('0')
ValueError: substring not found
>>> str.find('0') #使用find查詢時,不存在返回-1
-1
>>> str.rindex('a') #使用rindex反向查詢
5
>>> str.count('a') #使用count查詢指定字元出現的總共次數
3
>>> str.count('f')
2
>>> str.count('a',0,3) #使用count時,可以指定範圍,第一個數字指定起始位置,
0 #第二個數字指定 結束範圍,查詢範圍包含起始位,不包含結束位
>>> str.count('a',1,5)
2
>>> str.find('abcde') #操作物件為字串,傳入引數也是一個字串,並不一定是一個字元
5 #可以是字母數字以及中文
替換
.replace(str1,str2 [,n] ),將字串中所有的str1替換為str2,n可指定最多替換的次數
>>> str='123aaabcdeeff'
>>> str.replace('a','s') #不指定替換次數,將會全部替換
'123sssbcdeeff'
>>> str.replace('a','s',1) #指定次數時,僅替換指定次數個,替換順序為從前向後
'123saabcdeeff'
>>> str.replace('a','s',2)
'123ssabcdeeff'
分割
.split(str[,n]),以str為分隔符(分割後丟失),將字串分割為多個字串,n可指定最多的分割次數
.partition(str),已指定字元做為一個部分,分割兩邊,生成三部分的字串
.splitlines(),按照行進行分割,返回一個包含各行作為元素的列表
>>> str='123123123' #定義一個字串,用於測試
>>> str.split('2') #使用split進行分割
['1', '31', '31', '3'] #分割後指定的分割符消失,生成多個字串的列表
>>> str.partition('2') #使用partition進行分割
('1', '2', '3123123') #僅進行一次分割,分割後製定的分割符單獨成為一部分
>>> str='abc\nabc\nabc\nabc' #定義一個包含行符的字串
>>> print(str) #列印輸出測試
abc
abc
abc
abc
>>> str.splitlines() #使用splitlines進行分割,生成一個列表,每一行資料為一個元素
['abc', 'abc', 'abc', 'abc']
大小寫格式化
.capitalize(),將字串第一個首字母大寫(其它都小寫)
.title(),將字串中所有單詞首字母大寫(其它都小寫)
.lower()轉換所有大寫字元為小寫
.upper()轉換所有小寫字元為大寫
>>> str="abcABC defDEF hijHIJ klMN" #定義一個包含大小寫的字串用於測試
>>> str.capitalize() #將字串首字母進行大寫
'Abcabc defdef hijhij klmn'
>>> str.title() #將所有單詞首字母進行大寫
'Abcabc Defdef Hijhij Klmn'
>>> str.lower() #將字串中所有字母小寫
'abcabc defdef hijhij klmn'
>>> str.upper() #將字串中所有字母大寫
'ABCABC DEFDEF HIJHIJ KLMN'
>>>
對齊格式化
.ljust(width)返回一個原字串左對齊,並預設使用空格補充至長度為width的字串
.rjust(width)返回一個原字串右對齊,並預設使用空格補充至...........
.center(width) 返回一個原字元居中,並使用空格補充至width長度的新字串
#預設使用空格補充長度,顯示不夠明顯,所以為了突出效果,指定使用了*補充
str1=' abcde '
print(str1.ljust(20,'*')) #左對齊,指定長度為20
str2=' abcde '
print(str2.rjust(20,'*')) #右對齊,指定長度為20
str3=' abcde '
print(str3.center(20,'*')) #居中對齊,指定長度為20
#執行結果
# abcde **********
# ********* abcde
# **** abcde *****
清除空白字元
.lstrip(),刪除左側的空白字元
.rstrip(),刪除末尾的空白字元
.strip(),刪除兩端的空白字元
>>> str=' abc '
>>> str.lstrip() #刪除左側空格
'abc '
>>> str.rstrip() #刪除右側空格
' abc'
>>> str.strip() #刪除兩側空格
'abc'
>>>
檢查
.startswith(str),檢查字串是否以指定字元開頭,是則返回Turn,否則返回False
.endswith(str),檢查字串是否以指定字元結尾,是則返回Turn,否則為False
.isalpha(),檢查字串是否都是字母,是返回Turn,否則返回False
.isdigit(),檢查字串是否只包含數字,是返回Turn,否則返回False
.isalnum(),檢查字串是否都是字母或數字,是返回Turn,否則返回False
.isspace(),檢查字串是否只包含空格,是返回Turn,否則返回False
>>> str0='0123abcd'
>>> str1='12345'
>>> str2='abcdef'
>>> str3=' '
>>> str0.startswith('0') #檢查是否包含指定字串,是則返回True
True
>>> str0.startswith('6') #不包含則返回Flace
False
>>> str0.endswith('0') #檢查是否以指定字串結束,不是返回Flace
False
>>> str0.endswith('d') #是則返回True
True
>>> str1.isalnum() #檢測指定字串是否全是字母和數字組成
True
>>> str2.isalpha() #檢測指定字串是否全為字母
True
>>> str0.isdigit() #檢測指定字串是否全是數字
False
>>> str3.isspace() #檢測指定字串是否全為空格
True
>>>