【Python入门】Python字符串的45个方法详解
Python中字符串對象提供了很多方法來操作字符串,功能相當豐富。必須進行全面的了解與學(xué)習(xí),后面的代碼處理才能更得心應(yīng)手,編程水平走向新臺階的堅實基礎(chǔ)。目前一共有45個方法,給大家分類整理,可以收藏查詢使用。
?
#獲取字所有的符串方法 #獲取字所有的符串方法 print(dir(str)) [...,'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs',?'find',?'format',?'format_map',?'index',?'isalnum',?'isalpha',? 'isascii',?'isdecimal',?'isdigit',?'isidentifier','islower',?'isnumeric', 'isprintable',?'isspace',?'istitle','isupper',?'join',?'ljust',?'lower',?'lstrip',?'maketrans',? 'partition',?'replace',?'rfind',?'rindex',?'rjust',?'rpartition',?'rsplit',?'rstrip',?'split',?'splitlines',? 'startswith',?'strip',?'swapcase',?'title',?'translate',?'upper',?'zfill']系列文章:
Python列表的11個方法全解
Python集合17個方法詳解
Python 63個內(nèi)置函數(shù)超級詳解
一、大小寫轉(zhuǎn)換
01、capitalize()
描述:將字符串的第一個字母變成大寫,其余字母變?yōu)樾憽?/p>
語法:str.capitalize() ?
示例:
"i Love python".capitalize() 'I love python'"i Love pYthoN".capitalize() 'I love python'?
02、title()
描述:返回一個滿足標題格式的字符串。即所有英文單詞首字母大寫,其余英文字母小寫。
語法:str.title()
示例:
"i am very love python".title() 'I Am Very Love Python'?
03、swapcase()
描述:將字符串str中的大小寫字母同時進行互換。即將字符串str中的大寫字母轉(zhuǎn)換為小寫字母,將小寫字母轉(zhuǎn)換為大寫字母。
語法:str.swapcase()
示例:
"I Am Love PYTHON".swapcase() 'i aM lOVE python'"我愛pythoN Python pYTHON".swapcase() '我愛PYTHOn pYTHON Python'?
04、lower()
描述:將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母。
語法:str.lower()
示例:
"我愛pythoN Python!".lower() '我愛python python!'?
05、upper()
描述:將字符串中的所有小寫字母轉(zhuǎn)換為大寫字母。
語法: str.upper()
示例:
"i am very love python".upper() 'I AM VERY LOVE PYTHON'?
06、casefold()
描述:將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母。也可以將非英文 語言中的大寫轉(zhuǎn)換為小寫。
注意 :lower()函數(shù)和casefold()函數(shù)的區(qū)別:lower() 方法只對ASCII編碼,即‘A-Z’有效,對于其它語言中把大寫轉(zhuǎn)換為小寫的情況無效,只能用 casefold() 函數(shù)。
語法:str.casefold()
示例:
"Gro? - α".casefold()#德語 'gross - α'"I am verY love python".casefold() 'i am very love python'?
二、字符串填充
07、center()
描述:返回一個長度為width,兩邊用fillchar(單字符)填充的字符串,即字符串str居中,兩邊用fillchar填充。若字符串的長度大于width,則直接返回字符串str。
語法:str.center(width , "fillchar") ?
width —— 指定字符串長度。
fillchar —— 要填充的單字符,默認為空格。
示例:
'shuai'.center(10) ' shuai ''shuai'.center(10,'*') '**shuai***'#名字補齊 L = ['Jack','jenny','joe'] [name.center(10,'#') for name in L] ['###Jack###', '##jenny###', '###joe####']for name in L:print(name.center(10,'#')) ###Jack### ##jenny### ###joe####?
08、ljust()
描述:返回一個原字符串左對齊,并使用fillchar填充(默認為空格)至指定長度的新字符串。如果指定的長度小于原字符串的長度則返回原字符串。
語法: str.ljust(width, fillchar) ?-> str 返回一個新的字符串
width —— 指定字符串的輸出長度。
fillchar—— 將要填充的單字符,默認為空格。
示例:
'shuai'.ljust(10) 'shuai ''shuai'.ljust(10,'*') 'shuai*****'L = ['Jack','jenny','joe'] [name.ljust(10,'#') for name in L] ['Jack######', 'jenny#####', 'joe#######']for name in L:print(name.ljust(10,'#')) Jack###### jenny##### joe######?
09、rjust()
描述:返回一個原字符串右對齊,并使用fillchar填充(默認為空格)至指定長度的新字符串。如果指定的長度小于原字符串的長度則返回原字符串。
語法: str.ljust(width, fillchar)
width —— 指定字符串的輸出長度。
fillchar—— 將要填充的單字符,默認為空格。
示例:
'shuai'.rjust(10) ' shuai' 'shuai'.rjust(10,'*') '*****shuai'L = ['Jack','jenny','joe'] [name.rjust(10,'#') for name in L] ['######Jack', '#####jenny', '#######joe']for name in L:print(name.rjust(10,'*')) ******Jack *****jenny *******joefor name in L:print(name.rjust(10,'好')) 好好好好好好Jack 好好好好好jenny 好好好好好好好joe?
10、zfill()
描述:返回指定長度的字符串,使原字符串右對齊,前面用0填充到指定字符串長度。
語法:str.zfill(width)
width —— 指定字符串的長度,但不能為空。若指定長度小于字符串長度,則直接輸出原字符串。
示例:
'12'.zfill(10) '0000000012'#對用戶ID進行填充 L=['56783','34','987766721','326'] [id.zfill(10) for id in L] ['0000056783', '0000000034', '0987766721', '0000000326']for id in L:print(id.zfill(10)) 0000056783 0000000034 0987766721 0000000326 #等價于用0填充的右對齊 [id.rjust(10,'0') for id in L] ['0000056783',?'0000000034',?'0987766721',?'0000000326?
?
三、字符串編碼
11、encode()
描述:以指定的編碼格式編碼字符串,默認編碼為 'utf-8'。encode英文原意 編碼。
語法:str.encode(encoding='utf-8', errors='strict') ?
encoding 參數(shù)可選,即要使用的編碼,默認編碼為 'utf-8'。字符串編碼常用類型有:utf-8,gb2312,cp936,gbk等。
errors 參數(shù)可選,設(shè)置不同錯誤的處理方案。默認為 'strict',意為編碼錯誤引起一個UnicodeEncodeError。其它可能值有 'ignore', 'replace', 'xmlcharrefreplace'以及通過 codecs.register_error() 注冊其它的值。
示例:
"我愛祖國".encode(encoding="utf8",errors="strict") b'\xe6\x88\x91\xe7\x88\xb1\xe7\xa5\x96\xe5\x9b\xbd'"I love my country".encode(encoding="utf8",errors="strict")b'I love my country'?
?
12、decode()
描述:以 encoding 指定的編碼格式解碼字符串,默認編碼為字符串編碼。decode英文意思是 解碼,
語法:str.decode(encoding='utf-8', errors='strict')
encoding ——要使用的編碼,如:utf-8,gb2312,cp936,gbk等。
errors ——設(shè)置不同解碼錯誤的處理方案。默認為 'strict',意為編碼錯誤引起一個 UnicodeDecodeError。其它可能得值有 'ignore', 'replace'以及通過 codecs.register_error() 注冊的1其它值。
示例:
str1 = "我愛學(xué)習(xí)".encode(encoding="utf-8") str1 b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0'str1.decode(encoding="utf-8") '我愛學(xué)習(xí)'? ? ? ? ? ? ?
?
四、字符串查找
13、find()
描述:查找字符串中指定的子字符串sub第一次出現(xiàn)的位置,可以規(guī)定字符串的索引查找范圍。若無則返回 -1。
語法:str.find(sub,start,end) -> int 返回整數(shù)
參數(shù):
sub —要索引的子字符串。
start —索引的起始位置。默認值為0。
end —索引的結(jié)束位置。默認值為字符串長度len(str)。[start,end) 不包括end。
示例:
#查找子字符串"o" "I love python".find('o') 3#索引起始位置為4 索引范圍為:ve python "I love python".find('o',4) 11#索引起始位置為4,結(jié)束位置為12 索引范圍為:ve pytho "I love python".find('o',4,12) 11"I love python".find('o',4,11)#不包括11位的'o',返回-114、rfind()
描述:查找字符串中指定的子字符串sub最后一次出現(xiàn)的位置,可以規(guī)定字符串的索引查找范圍。若無則返回 -1。
語法:str.rfind(sub,start,end) -> int 返回整數(shù)
參數(shù):
sum —要索引的子字符串。
start —索引的起始位置。默認值為0。
end —索引的結(jié)束位置。默認值為字符串長度len(str)。[start,end) 不包括end。
注:rfind()函數(shù)用法與find()函數(shù)相似,rfind()函數(shù)返回指定子字符串最后一次出現(xiàn)的位置,find()函數(shù)返回指定子字符串第一次出現(xiàn)的位置。
示例:
#查找子字符串"o" "I love python".find('o') 3#索引起始位置為4 索引范圍為:ve python "I love python".find('o',4) 11#索引起始位置為4,結(jié)束位置為12 索引范圍為:ve pytho "I?love?python".find('o',4,1215、index()
描述:查找字符串中第一次出現(xiàn)的子字符串的位置,可以規(guī)定字符串的索引查找范圍[star,end)。若無則會報錯。
語法:str.index(sub, start, end) ?-> int ?返回整數(shù)
參數(shù):
sub —— 查找的子字符串。
start —— 索引的起始位置,默認為0。
end ?—— 索引的結(jié)束位置,默認為字符串的長度。
示例:
"I love python".index("o") #默認索引整個字符串"I love python".index("o",4) #索引 ve python 11"I love python".index("o",4,12) #索引 ve pytho 11"I love python".index("love") #索引多個字符 2 "I love python".index("k") #索引字符串不存在,報錯 ValueError: substring not fou?
16、rindex()
描述:?rindex() 方法返回子字符串最后一次出現(xiàn)在字符串中的索引位置,該方法與 rfind()?方法一樣,可以規(guī)定字符串的索引查找范圍[star,end),只不過如果子字符串不在字符串中會報一個異常。
語法:str.rindex(sub, start, end) -> int ? 返回整數(shù)。
參數(shù):
sub —— 查找的子字符串。
start —— 索引的起始位置,默認為0。
end ?—— ?索引的結(jié)束位置,默認為字符串的長度。
示例:
"I love python".rindex('o') 11"I love python".index('o') 3"I love python".rindex('k') ValueError: substring not found"I love python".rfind('k') -1?
五、字符串格式化
17、format()
描述:Python2.6 開始,新增了一種格式化字符串的函數(shù)?str.format(),它增強了字符串格式化的功能?;菊Z法是通過?{}?和?:?來代替以前的?%?。使用format()來格式化字符串時,使用在字符串中使用{}作為占位符,占位符的內(nèi)容將引用format()中的參數(shù)進行替換??梢允俏恢脜?shù)、命名參數(shù)或者兼而有之。
format 函數(shù)可以接受不限個參數(shù),位置可以不按順序。
語法:format(value, format_spec)
參數(shù):
示例:
# 位置參數(shù) '{}:您{}購買的{}到了!請下樓取快遞。'.format('快遞小哥','淘寶','快遞') '快遞小哥:您淘寶購買的快遞到了!請下樓取快遞。'#給批量客戶發(fā)短息 n_list=['馬云','馬化騰','麻子','小紅','李彥宏','二狗子'] for name in n_list:print('{0}:您淘寶購買的快遞到了!請下樓取快遞!'.format(name)) 馬云:您淘寶購買的快遞到了!請下樓取快遞! 馬化騰:您淘寶購買的快遞到了!請下樓取快遞! 麻子:您淘寶購買的快遞到了!請下樓取快遞! 小紅:您淘寶購買的快遞到了!請下樓取快遞! 李彥宏:您淘寶購買的快遞到了!請下樓取快遞! 二狗子:您淘寶購買的快遞到了!請下樓取快遞!#名字進行填充 for n in n_list:print('{0}:您淘寶購買的快遞到了!請下樓取快遞!'.format(n.center(3,'*')))*馬云:您淘寶購買的快遞到了!請下樓取快遞! 馬化騰:您淘寶購買的快遞到了!請下樓取快遞! *麻子:您淘寶購買的快遞到了!請下樓取快遞! *小紅:您淘寶購買的快遞到了!請下樓取快遞! 李彥宏:您淘寶購買的快遞到了!請下樓取快遞! 二狗子:您淘寶購買的快遞到了!請下樓取快遞!'{0}, {1} and {2}'.format('gao','fu','shuai') 'gao, fu and shuai'x=3 y=5 '{0}+{1}={2}'.format(x,y,x+y) # 命名參數(shù) '{name1}, {name2} and {name3}'.format(name1='gao', name2='fu', name3='shuai') 'gao, fu and shuai' # 混合位置參數(shù)、命名參數(shù) '{name1}, {0} and {name3}'.format("shuai", name1='fu', name3='gao') 'fu,?shuai?and?gao'#for循環(huán)進行批量處理 ["vec_{0}".format(i) for i in range(0,5)] ['vec_0', 'vec_1', 'vec_2', 'vec_3', 'vec_4']['f_{}'.format(r) for r in list('abcde')] ['f_a', 'f_b', 'f_c', 'f_d']?
18、format_map()
描述:返回字符串的格式化版本。在Python3中使用format和format_map方法都可以進行字符串格式化,但format是一種所有情況都能使用的格式化方法,format_map僅使用于字符串格式中可變數(shù)據(jù)參數(shù)來源于字典等映射關(guān)系數(shù)據(jù)時才可以使用。
語法:str.format_map(mapping) ?-> str 返回字符串
參數(shù):mapping 是一個字典對象
示例:
People = {"name": "john", "age": 33} "My name is {name},iam{age} old".format_map(People)#對比案例 定義一個字典 student = {'name':'張三','class':'20200504','score':748}使用format輸出相關(guān)信息: '{st[class]}班{st[name]}總分:{st[score]}'.format(st=student) '20200504班張三總分:748'format_map方法后如下 '{class}班{name}總分:{score}'.format_map(student) '20200504班張三總分:7?
六、解決判斷問題
19、endswith()
描述:判斷字符串是否以指定字符或子字符串結(jié)尾。
語法:str.endswith("suffix", start, end) 或str[start,end].endswith("suffix") ? ?用于判斷字符串中某段字符串是否以指定字符或子字符串結(jié)尾?!?gt; bool ? ?返回值為布爾類型(True,False)
參數(shù):
suffix — 后綴,可以是單個字符,也可以是字符串,還可以是元組("suffix"中的引號要省略,常用于判斷文件類型)。
start —索引字符串的起始位置。
end — 索引字符串的結(jié)束位置。
?注意:空字符的情況。返回值通常為True
示例:
"I love python".endswith('n')True"I love python".endswith("python") True "I love python".endswith("n",0,6)# 索引 i love 是否以“n”結(jié)尾。 False "I love python".endswith("") #空字符 True "I love python".endswith(("n","z"))#遍歷元組的元素,存在即返回True,否者返回False True "I love python".endswith(("k","m")) False#元組案例 file = "python.txt" if file.endswith("txt"):print("該文件是文本文件") elif file.endswith(("AVI","WMV","RM")):print("該文件為視頻文件") else:print("文件格式未知?
20、startswith()
描述:判斷字符串是否以指定字符或子字符串開頭。
語法:str.endswith("suffix", start, end) 或
str[start,end].endswith("suffix") ? ?用于判斷字符串中某段字符串是否以指定字符或子字符串結(jié)尾。
—> bool ? ?返回值為布爾類型(True,False)
參數(shù):
suffix — 后綴,可以是單個字符,也可以是字符串,還可以是元組("suffix"中的引號要省略)。
start —索引字符串的起始位置。
end — 索引字符串的結(jié)束位置。
注意:空字符的情況。返回值通常也為True
示例:
"hello,i love python".startswith("h") True "hello,i love python".startswith("l",2,10)# 索引 llo,i lo 是否以“l(fā)”開頭。 True "hello,i love python".startswith("") #空字符 True "hello,i love python"[0:6].startswith("h") # 只索引 hello, True "hello,i love python"[0:6].startswith("e") False "hello,i love python"[0:6].startswith("") True "hello,i love python".startswith(("h","z"))#遍歷元組的元素,存在即返回True,否者返回False True "hello,i love python".startswith(("k","m")) False?
21、isalnum()
描述:檢測字符串是否由字母和數(shù)字組成。str中至少有一個字符且所有字符都是字母或數(shù)字則返回 True,否則返回 False
語法:str.isalnum() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):
示例:
"seven-11".isalnum() False"seven11".isalnum() True"seven".isalnum() True"11".isalnum() True?
?
22、isalpha()
描述:檢測字符串是否只由字母組成。字符串中至少有一個字符且所有字符都是字母則返回 True,否則返回 False。
語法:str.isalpha() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
示例:
"I love python".isalpha()#存在空格返回False False"Ilovepython".isalpha() True"Ilovepython123".isalpha() False23、isdecimal()
描述:檢查字符串是否只包含十進制字符。字符串中若只包含十進制字符返回True,否則返回False。該方法只存在于unicode對象中。注意:定義一個十進制字符串,只需要在字符串前添加前綴 'u' 即可。
語法: str.isdecimal() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
示例:
"123456".isdecimal() True u"123456".isdecimal() True"123456python".isdecimal() False?
24、isdigit()
描述:檢測字符串是否只由數(shù)字組成.字符串中至少有一個字符且所有字符都是數(shù)字則返回 True,否則返回 False。
語法:str.isdigit() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
注:能判斷“①”,不能判斷中文數(shù)字。但 isnumeric() 函數(shù)可以。
示例:
"python".isdigit() #全為字母 False"123".isdigit() #全為數(shù)字 True "python666".isdigit() #字母和數(shù)字的組合 False "一二三四五六七".isdigit() #中文數(shù)字輸出False False "①".isdigit() True?
25、isidentifier()
描述:判斷str是否是有效的標識符。str為符合命名規(guī)則的變量,保留標識符則返回True,否者返回False。
語法:str.isidentifier() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
示例:
"123".isidentifier() #變量名為123 False "def".isidentifier() #變量名為保留字 True "_123".isidentifier() #變量名有下劃線開頭 True "student".isidentifier()#變量名由字母開端 True?
26、islower()
描述:檢測字符串中的字母是否全由小寫字母組成。(字符串中可包含非字母字符)字符串中包含至少一個區(qū)分大小寫的字符,且所有這些區(qū)分大小寫的字符都是小寫,則返回 True,否則返回 False。
語法:str.islower() ?-> bool ? 返回值為布爾類型(True,False)
參數(shù):無
示例:
#字符串中的字母全為小寫 "i love python".islower() True#字符串中的字母全為小寫,也存在非字母的字符 "我愛python!".islower() True #字符串中有大寫字符 "I love python".islower() False?
27、isupper()
描述:檢測字符串中的字母是否全由大寫字母組成。(字符串中可包含非字母字符)。字符串中包含至少一個區(qū)分大小寫的字符,且所有這些區(qū)分大小寫的字符都是大寫,則返回 True,否則返回 False。
語法:str.isupper() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
示例:
"I LOVE PYTHON".isupper() #全為大寫字母 True"i LOVE PYTHON".isupper() #存在小寫字母 False"我愛PYTHON".isupper() #存在非字母的字符 True?
28、inumeric()
描述:測字符串是否只由數(shù)字組成。這種方法是只適用于unicode對象。字符串中只包含數(shù)字字符,則返回 True,否則返回 False。
語法:str.isnumeric() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
示例:
u"123456".isnumeric() #全為數(shù)字 True"123456".isnumeric() True"python666".isnumeric() #字母數(shù)字組合 False"一二三四五六".isnumeric() #中文數(shù)字 True"①".isnumeric() True?
29、isprintable()
描述:判斷字符串中是否有打印后不可見的內(nèi)容。如:\n \t ?等字符。若字符串中不存在\n \t 等不可見的內(nèi)容,則返回True,否者返回False。
語法: ?str.isprintable() ?-> bool 返回值為布爾類型(True,False)
參數(shù):無
示例:
#不存在用print()打印后不可見的內(nèi)容 "i love python".isprintable() True#存在用print()打印后不可見的內(nèi)容 \n "i love python \n".isprintable() False"i love \t python".isprintable() False?
30、isspace()
描述: 檢測字符串是否只由空格組成。若字符串中只包含空格,則返回 True,否則返回 False。
語法:str.isspace() ?-> bool ? 返回值為布爾類型(True,False)
參數(shù):無
示例:
str1 = " "#空格 str2 = "i love python" print(str1.isspace()) True print(str2.isspace()) False print(str2[1].isspace()) #字符串str2 的第二個字符為空格 True?
31、istitle()
描述:檢測判斷字符串中所有單詞的首字母是否為大寫,且其它字母是否為小寫,字符串中可以存在其它非字母的字符。若字符串中所有單詞的首字母為大寫,且其它字母為小寫,則返回 True,否則返回 False.
語法:str.istitle() ?-> bool ?返回值為布爾類型(True,False)
參數(shù):無
示例:
"I Love Python".istitle() #各單詞的首字母均為大寫,其余字母為小寫 True "I love python".istitle() False"I LOVE PYTHON".istitle() False"我愛Python".istitle() #存在其它非字母字符, True?
七、字符串修剪
32、strip()
描述:該函數(shù)的作用是去除字符串開頭和結(jié)尾處指定的字符,不會去除字符串中間對應(yīng)的字符
語法:str.strip(chars) ?
參數(shù):chars -- 要去除的字符 ?默認為空格或換行符。
示例:
#默認參數(shù),去除了空格,\n \t \r字符,且未除去字符串中間相應(yīng)的字符 a = ' \n111 aaa ' print(a.strip()) 111 aaa#去除兩端的指定字符 b='.-.word:我很帥.-.' print(b.strip('.-.')) word:我很帥c='參考:來自公眾號AI入門學(xué)習(xí)' print(c.strip('參考:')) 來自公眾號AI入門學(xué)?
33、lstrip()
描述:lstrip() 方法用于截掉字符串左邊的空格或指定字符。
語法:str.lstrip(chars) ?
參數(shù):chars--要去除的字符 ?默認為空格或換行符。
示例:
#去除左邊指定字符 a = '--我愛Python--' a.lstrip('--') '我愛Python--'#重復(fù)的值只需要寫一個 a.lstrip('-') '我愛Python--'?
34、 rstrip()
描述:?刪除 str 字符串末尾的指定字符(默認為空格)
語法:str.rstrip(chars)
參數(shù):chars --要去除的字符 ?默認為空格或換行符。
示例:
#去除左邊指定字符 a = '6234412134445533-456' a.rstrip('-456') '6234412134445533' #對一個列表所有的字符串進行去除 ls = ['34667777777-456','62344121344433-456','28993333455-456'] [i.rstrip('-456') for i in ls] ['34667777777', '62344121344433', '28993333']?
八、字符串加密解密
35、maketrans()
描述:制作翻譯表,刪除表,常與translate()函數(shù)連用。即:返回用于str.translate方法翻譯的轉(zhuǎn)換表。
語法:str.maketrans(intab, outtab,delchars)
參數(shù):
intab -- 字符串中要替代的字符組成的字符串。
outtab -- 相應(yīng)的映射字符的字符串。
delchars -- 可選參數(shù),表示要刪除的字符組成的字符串。
示例:
str.maketrans() 生成一個字符一對一映射的table,然后使用 translate(table) 對字符串S中的每個字符進行映射。 例如,現(xiàn)在想要對"I love fairy"做一個簡單的加密,將里面部分字符都替換為數(shù)字,這樣別人就不知道轉(zhuǎn)換后的這句話是什么意思。 in_str = 'afcxyo' out_str = '123456'# maketrans()生成映射表 map_table=str.maketrans(in_str,out_str)# 使用translate()進行映射 my_love='I love fairy' my_love.translate(map_table) 'I l6ve 21ir5'注意maketrans(x, y, z]) 中的x和y都是字符串,且長度必須相等。 如果maketrans(x, y, z]) 給定了第三個參數(shù)z,這這個參數(shù)字符串中的每個字符都會被映射為None。#'yo'都會被隱藏了 map_table=str.maketrans(in_str,out_str,'yo') my_love='I love fairy' my_love.translate(map_table) 'I lve 2136、translate()
描述:過濾(刪除),翻譯字符串。即根據(jù)maketrans()函數(shù)給出的字符映射轉(zhuǎn)換表來轉(zhuǎn)換字符串中的字符。
注:translate()函數(shù)是先過濾(刪除),再根據(jù)maketrans()函數(shù)返回的轉(zhuǎn)換表來翻譯。
語法:str.translate(table) ?
參數(shù):
示例:
見上述案例?
九、分割字符串
37、partition()
描述:根據(jù)指定的分隔符(sep)將字符串進行分割。從字符串左邊開始索引分隔符sep,索引到則停止索引。
語法: str.partition(sep) ?
參數(shù):sep —— 指定的分隔符。
返回值:(head, sep, tail) ?返回一個三元元組,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,則返回一個三元元組,第一個為分隔符sep左邊的子字符串,第二個為分隔符sep本身,第三個為分隔符sep右邊的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一個三元元組,第一個元素為字符串本身,第二第三個元素為空字符串
示例:
string = 'https://www.google.com.hk/'string.partition("://") #字符串str中存在sep"://" ('https', '://', 'www.google.com.hk/')string.partition(",") #字符串str中不存在sep",",返回了兩個空字符串。 ('https://www.google.com.hk/', '', '')string.partition(".") #字符串str中存在兩個"." 但索引到www后的"." 停止索引。 ('https://www', '.', 'google.com.hk/')type(string.partition("://")) #返回的是tuple類型 tuple?
38、rpartition()
描述:根據(jù)指定的分隔符(sep)將字符串進行分割。從字符串右邊(末尾)開始索引分隔符sep,索引到則停止索引。
語法: str.rpartition(sep) ?
參數(shù):sep —— 指定的分隔符。
返回值: (head, sep, tail) 返回一個三元元組,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,則返回一個三元元組,第一個為分隔符sep左邊的子字符串,第二個為分隔符sep本身,第三個為分隔符sep右邊的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一個三元元組,第一個元素為字符串本身,第二第三個元素為空字符串。
注:rpartition()函數(shù)與partition()函數(shù)用法相似,rpartition()函數(shù)從右邊(末尾)開始索引,partition()函數(shù)從左邊開始索引。
示例:
string = 'https://www.google.com.hk/'string.rpartition(".") #字符串str中不存在sep",",返回了兩個空字符串。('https://www.google.com', '.', 'hk/') string.partition(".") #字符串str中不存在sep",",返回了兩個空字符串。 ('https://www', '.', 'google.com.hk/')?
39、split()
描述:拆分字符串。通過指定分隔符sep對字符串進行分割,并返回分割后的字符串列表。
語法: str.split(sep=None, maxsplit=-1) [n] ?
sep —— 分隔符,默認為空格,但不能為空即(")。
maxsplit —— 最大分割參數(shù),默認參數(shù)為-1。
[n] —— 返回列表中下標為n的元素。列表索引的用法。
示例:
#默認空格分割 str1 = "I love python" str1.split() ['I', 'love', 'python'] #取第三位 str1.split()[2] 'python'#以"."為分隔符,maxsplit默認為-1 str2 = '列夫·尼古拉耶維奇·托爾斯泰' str2.split('·') ['列夫', '尼古拉耶維奇', '托爾斯泰'] #以"."為分隔符,只分割一次。 str2.split('·',1)['列夫', '尼古拉耶維奇·托爾斯泰?
40、rsplit()
描述:拆分字符串。通過指定分隔符sep對字符串進行分割,并返回分割后的字符串列表,類似于split()函數(shù),只不過 rsplit()函數(shù)是從字符串右邊(末尾)開始分割。
語法:str.rsplit(sep=None, maxsplit=-1) ?-> list of strings ?返回 字符串列表 ?或str.rsplit(sep=None, maxsplit=-1)[n] ?
參數(shù):
sep —— 分隔符,默認為空格,但不能為空即(")。
maxsplit —— 最大分割參數(shù),默認參數(shù)為-1。
[n] —— 返回列表中下標為n的元素。列表索引的用法。
示例:
# 只搜索到一個sep時,兩者結(jié)果相同 'abcxyzopq'.partition('xy') ('abc', 'xy', 'zopq')'abcxyzopq'.rpartition('xy') ('abc', 'xy', 'zopq')# 搜索到多個sep時,分別從左第一個、右第一個sep分割 'abcxyzopxyq'.partition('xy') ('abc', 'xy', 'zopxyq')'abcxyzopxyq'.rpartition('xy')('abcxyzop', 'xy', 'q')?
41、splitlines()
描述:按照('\n', '\r', \r\n'等)分隔,返回一個包含各行作為元素的列表,默認不包含換行符。\n 換行符 \r 回車符 ?\r\n 回車+換行
語法:S.splitlines([keepends=False])
參數(shù):keepends -- 在輸出結(jié)果里是否去掉行界符('\r', '\r\n', \n'等),默認為 False,不包含行界符,如果為 True,則保留行界符。
示例:
# 字符串以換行符為分隔符拆分,去掉換行符 'HOW\nSOFT\nWORKS'.splitlines() ['HOW', 'SOFT', 'WORKS']# 如果keepends為True,保留換行符 'HOW\nSOFT\nWORKS'.splitlines(True) ['HOW\n', 'SOFT\n', 'WORKS']"123\n456\r789\r\nabc".splitlines() ['123', '456', '789', 'abc']?
42、join()
描述:將iterable變量的每一個元素后增加一個str字符串。
語法: sep.join(iterable) ?
sep——分隔符??梢詾榭?。
iterable—— 要連接的變量 ,可以是 字符串,元組,字典,列表等。
示例:
python中經(jīng)??吹絡(luò)oin,特別是在自然語言處理的時候,分詞什么的,但是很多初學(xué)者不理解其中的意思,這里進行詳細的介紹,希望對大家能有幫助。 將可迭代對象(iterable)中的字符串使用string連接起來。注意,iterable中必須全部是字符串類型,否則報錯。如果你還是python的初學(xué)者,還不知道iterable是什么,卻想來看看join的具體語法,那么你可以暫時將它理解為:字符串string、列表list、元組tuple、字典dict、集合set。當然還有生成器generator等也可以用該方法。1)字符串 L='python' '_'.join(L) 'p_y_t_h_o_n' '_uu_'.join(L) 'p_uu_y_uu_t_uu_h_uu_o_uu_n'2)元組 L1=('1','2','3') '_'.join(L1) '1_2_3'3)集合。注意,集合無序。 L2={'p','y','t','h','o','n'} '_'.join(L2) 't_n_o_h_y_p'4)列表 L2=['py','th','o','n'] '_'.join(L2) 'py_th_o_n'5)字典 L3={'name':"malongshuai",'gender':'male','from':'China','age':18} '_'.join(L3) 'name_gender_from_age'6)iterable參與迭代的部分必須是字符串類型,不能包含數(shù)字或其他類型。 L1=(1,2,3) '_'.join(L1) TypeError: sequence item 0: expected str instance, int found以下兩種也不能join。 L1=('ab',2) L2=('AB',{'a','cd'})?
九、字符串替換
43、replace()函數(shù)
描述:把str.中的 old 替換成 new,如果 count 指定,則替換不超過 count次.。
語法:str.replace(old, new, count)
參數(shù):
old —— 將被替換的子字符串。
new —— 新子字符串,用于替換old子字符串。
count —— 替換的次數(shù),默認全部替換。
案例:
s = "我的小伙伴張三" s.replace("張三","馬云") '我的小伙伴馬云's = "I love python" #默認字符串中的全部"o" 全部替換為"w" s.replace("o","w") 'I lwve pythwn'#只替換一個"o" s.replace("o","w",1) 'I lwve python'#子字符串可以是多個字符。 s.replace("python","java") 'I love java'?
44、expandtabs()
描述:將字符串S中的 \t 替換為一定數(shù)量的空格。默認N=8。
語法:str.expandtabs(tabsize=8)
tabsize 的默認值為8。tabsize值為0到7等效于tabsize=8。tabsize每增加1,原字符串中“\t”的空間會多加一個空格。
示例:
'01\t012\t0123\t01234'.expandtabs(4) '01 012 0123 01234''01\t012\t0123\t01234'.expandtabs(8) '01 012 0123 01234'?
十、統(tǒng)計字符次數(shù)
45、count()
描述:統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù)??梢赃x擇字符串索引的起始位置和結(jié)束位置。? ? ? ? ?
語法:str.count("char", start,end) ?或 str.count("char")
str —— 為要統(tǒng)計的字符(可以是單字符,也可以是多字符)。
star —— 為索引字符串的起始位置,默認參數(shù)為0。
end —— 為索引字符串的結(jié)束位置,默認參數(shù)為字符串長度即len(str)。
示例:
'abc--qo-ab'.count('ab') 2 #從第二位開始查找 'abc--qo-ab'.count('ab',1) 1 #不包括邊界 'abc--qo-ab'.count('ab',1,9) 0?
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)在線手冊AI基礎(chǔ)下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復(fù)“加群”獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/yFQV7am喜歡文章,點個在看
總結(jié)
以上是生活随笔為你收集整理的【Python入门】Python字符串的45个方法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习入门】机器学习基础核心算法:贝
- 下一篇: 【Python入门】Python 63个