python中字符串對象提供了很多方法來操作字符串,功能相當豐富。必須進行全面的了解與學習,后面的代碼處理才能更得心應手,編程水平走向新台階的堅實基礎。目前一共有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']
一、大小寫轉換
01、capitalize()
描述:將字符串的第一個字母變成大寫,其余字母變為小寫。
語法: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中的大寫字母轉換為小寫字母,將小寫字母轉換為大寫字母。
語法:str.swapcase()
示例:
"I Am Love PYTHON".swapcase()
'i aM lOVE python'
"我愛pythoN Python pYTHON".swapcase()
'我愛PYTHOn pYTHON Python'
04、lower()
描述:將字符串中的所有大寫字母轉換為小寫字母。
語法:str.lower()
示例:
"我愛pythoN Python!".lower()
'我愛python python!'
05、upper()
描述:將字符串中的所有小寫字母轉換為大寫字母。
語法: str.upper()
示例:
"i am very love python".upper()
'I AM VERY LOVE PYTHON'
06、casefold()
描述:將字符串中的所有大寫字母轉換為小寫字母。也可以將非英文 語言中的大寫轉換為小寫。
注意 :lower()函數和casefold()函數的區別:lower() 方法只對ASCII編碼,即‘A-Z’有效,對於其它語言中把大寫轉換為小寫的情況無效,只能用 casefold() 函數。
語法: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
*******joe
for name in L:
print(name.rjust(10,'好'))
好好好好好好Jack
好好好好好jenny
好好好好好好好j
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 參數可選,即要使用的編碼,默認編碼為 'utf-8'。字符串編碼常用類型有:utf-8,gb2312,cp936,gbk等。
- errors 參數可選,設置不同錯誤的處理方案。默認為 '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 ——設置不同解碼錯誤的處理方案。默認為 'strict',意為編碼錯誤引起一個 UnicodeDecodeError。 其它可能得值有 'ignore', 'replace'以及通過 codecs.register_error() 注冊的1其它值。
示例:
str1 = "我愛學習".encode(encoding="utf-8")
str1
b'\\xe6\\x88\\x91\\xe7\\x88\\xb1\\xe5\\xad\\xa6\\xe4\\xb9\\xa0'
str1.decode(encoding="utf-8")
'我愛學習'

四、字符串查找
13、find()
描述:查找字符串中指定的子字符串sub第一次出現的位置,可以規定字符串的索引查找范圍。若無則返回 -1。
語法:str.find(sub,start,end) -> int 返回整數
參數:
- sub —要索引的子字符串。
- start —索引的起始位置。默認值為0。
- end —索引的結束位置。默認值為字符串長度len(str)。[start,end) 不包括end。
示例:
#查找子字符串"o"
"I love python".find('o')
3
#索引起始位置為4 索引范圍為:ve python
"I love python".find('o',4)
11
#索引起始位置為4,結束位置為12 索引范圍為:ve pytho
"I love python".find('o',4,12)
11
"I love python".find('o',4,11)#不包括11位的'o',返回-1
14、rfind()
描述:查找字符串中指定的子字符串sub最后一次出現的位置,可以規定字符串的索引查找范圍。若無則返回 -1。
語法:str.rfind(sub,start,end) -> int 返回整數
參數:
- sum —要索引的子字符串。
- start —索引的起始位置。默認值為0。
- end —索引的結束位置。默認值為字符串長度len(str)。[start,end) 不包括end。
注:rfind()函數用法與find()函數相似,rfind()函數返回指定子字符串最后一次出現的位置,find()函數返回指定子字符串第一次出現的位置。
示例:
#查找子字符串"o"
"I love python".find('o')
3
#索引起始位置為4 索引范圍為:ve python
"I love python".find('o',4)
11
#索引起始位置為4,結束位置為12 索引范圍為:ve pytho
"I love python".find('o',4,12
15、index()
描述:查找字符串中第一次出現的子字符串的位置,可以規定字符串的索引查找范圍[star,end)。若無則會報錯。
語法:str.index(sub, start, end) -> int 返回整數
參數:
- sub —— 查找的子字符串。
- start —— 索引的起始位置,默認為0。
- end —— 索引的結束位置,默認為字符串的長度。
示例:
"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() 方法返回子字符串最后一次出現在字符串中的索引位置,該方法與 rfind() 方法一樣,可以規定字符串的索引查找范圍[star,end),只不過如果子字符串不在字符串中會報一個異常。
語法:str.rindex(sub, start, end) -> int 返回整數。
參數:
- sub —— 查找的子字符串。
- start —— 索引的起始位置,默認為0。
- end —— 索引的結束位置,默認為字符串的長度。
示例:
"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'
五、字符串格式化
17、format()
描述:Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。基本語法是通過 {} 和 : 來代替以前的 % 。使用format()來格式化字符串時,使用在字符串中使用{}作為占位符,占位符的內容將引用format()中的參數進行替換。可以是位置參數、命名參數或者兼而有之。
format 函數可以接受不限個參數,位置可以不按順序。
語法:format(value, format_spec)
參數:
示例:
# 位置參數
'{}:您{}購買的{}到了!請下樓取快遞。'.format('快遞小哥','淘寶','快遞')
'快遞小哥:您淘寶購買的快遞到了!請下樓取快遞。'
#給批量客戶發短息
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)
# 命名參數
'{name1}, {name2} and {name3}'.format(name1='gao', name2='fu', name3='shuai')
'gao, fu and shuai'
# 混合位置參數、命名參數
'{name1}, {0} and {name3}'.format("shuai", name1='fu', name3='gao')
'fu, shuai and gao'
#for循環進行批量處理
["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'
18、format_map()
描述:返回字符串的格式化版本。在Python3中使用format和format_map方法都可以進行字符串格式化,但format是一種所有情況都能使用的格式化方法,format_map僅使用於字符串格式中可變數據參數來源於字典等映射關系數據時才可以使用。
語法:str.format_map(mapping) -> str 返回字符串
參數:mapping 是一個字典對象
示例:
People = {"name": "john", "age": 33}
"My name is {name},iam{age} old".format_map(People)
#對比案例
定義一個字典
student = {'name':'張三','class':'20200504','score':748}
使用format輸出相關信息:
'{st[class]}班{st[name]}總分:{st[score]}'.format(st=student)
'20200504班張三總分:748'
format_map方法后如下
'{class}班{name}總分:{score}'.format_map(student)
'20200504班張三總分:7
六、解決判斷問題
19、endswith()
描述:判斷字符串是否以指定字符或子字符串結尾。
語法:str.endswith("suffix", start, end) 或str[start,end].endswith("suffix") 用於判斷字符串中某段字符串是否以指定字符或子字符串結尾。—> bool 返回值為布爾類型(True,False)
參數:
- suffix — 后綴,可以是單個字符,也可以是字符串,還可以是元組("suffix"中的引號要省略,常用於判斷文件類型)。
- start —索引字符串的起始位置。
- end — 索引字符串的結束位置。
注意:空字符的情況。返回值通常為True
示例:
"I love python".endswith('n')
True
"I love python".endswith("python")
True
"I love python".endswith("n",0,6)# 索引 i love 是否以“n”結尾。
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") 用於判斷字符串中某段字符串是否以指定字符或子字符串結尾。
—> bool 返回值為布爾類型(True,False)
參數:
- suffix — 后綴,可以是單個字符,也可以是字符串,還可以是元組("suffix"中的引號要省略)。
- start —索引字符串的起始位置。
- end — 索引字符串的結束位置。
注意:空字符的情況。返回值通常也為True
示例:
"hello,i love python".startswith("h")
True
"hello,i love python".startswith("l",2,10)# 索引 llo,i lo 是否以“l”開頭。
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()
描述:檢測字符串是否由字母和數字組成。str中至少有一個字符且所有字符都是字母或數字則返回 True,否則返回 False
語法:str.isalnum() -> bool 返回值為布爾類型(True,False)
參數:
示例:
"seven-11".isalnum()
False
"seven11".isalnum()
True
"seven".isalnum()
True
"11".isalnum()
Tr
22、isalpha()
描述:檢測字符串是否只由字母組成。字符串中至少有一個字符且所有字符都是字母則返回 True,否則返回 False。
語法:str.isalpha() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
"I love python".isalpha()#存在空格返回False
False
"Ilovepython".isalpha()
True
"Ilovepython123".isalpha()
Fals
23、isdecimal()
描述:檢查字符串是否只包含十進制字符。字符串中若只包含十進制字符返回True,否則返回False。該方法只存在於unicode對象中。注意:定義一個十進制字符串,只需要在字符串前添加前綴 'u' 即可。
語法: str.isdecimal() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
"123456".isdecimal()
True
u"123456".isdecimal()
True
"123456python".isdecimal()
False
24、isdigit()
描述:檢測字符串是否只由數字組成.字符串中至少有一個字符且所有字符都是數字則返回 True,否則返回 False。
語法:str.isdigit() -> bool 返回值為布爾類型(True,False)
參數:無
注:能判斷“①”,不能判斷中文數字。但 isnumeric() 函數可以。
示例:
"python".isdigit() #全為字母
False
"123".isdigit() #全為數字
True
"python666".isdigit() #字母和數字的組合
False
"一二三四五六七".isdigit() #中文數字輸出False
False
"①".isdigit()
True
25、isidentifier()
描述:判斷str是否是有效的標識符。str為符合命名規則的變量,保留標識符則返回True,否者返回False。
語法:str.isidentifier() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
"123".isidentifier() #變量名為123
False
"def".isidentifier() #變量名為保留字
True
"_123".isidentifier() #變量名有下划線開頭
True
"student".isidentifier()#變量名由字母開端
True
26、islower()
描述:檢測字符串中的字母是否全由小寫字母組成。(字符串中可包含非字母字符)字符串中包含至少一個區分大小寫的字符,且所有這些區分大小寫的字符都是小寫,則返回 True,否則返回 False。
語法:str.islower() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
#字符串中的字母全為小寫
"i love python".islower()
True
#字符串中的字母全為小寫,也存在非字母的字符
"我愛python!".islower()
True
#字符串中有大寫字符
"I love python".islower()
False
27、isupper()
描述:檢測字符串中的字母是否全由大寫字母組成。(字符串中可包含非字母字符)。字符串中包含至少一個區分大小寫的字符,且所有這些區分大小寫的字符都是大寫,則返回 True,否則返回 False。
語法:str.isupper() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
"I LOVE PYTHON".isupper() #全為大寫字母
True
"i LOVE PYTHON".isupper() #存在小寫字母
False
"我愛PYTHON".isupper() #存在非字母的字符
Tru
28、inumeric()
描述:測字符串是否只由數字組成。這種方法是只適用於unicode對象。字符串中只包含數字字符,則返回 True,否則返回 False。
語法:str.isnumeric() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
u"123456".isnumeric() #全為數字
True
"123456".isnumeric()
True
"python666".isnumeric() #字母數字組合
False
"一二三四五六".isnumeric() #中文數字
True
"①".isnumeric()
Tr
29、isprintable()
描述:判斷字符串中是否有打印后不可見的內容。如:\n \t 等字符。若字符串中不存在\n \t 等不可見的內容,則返回True,否者返回False。
語法: str.isprintable() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
#不存在用print()打印后不可見的內容
"i love python".isprintable()
True
#存在用print()打印后不可見的內容 \n
"i love python \n".isprintable()
False
"i love \t python".isprintable()
Fals
30、isspace()
描述: 檢測字符串是否只由空格組成。若字符串中只包含空格,則返回 True,否則返回 False。
語法:str.isspace() -> bool 返回值為布爾類型(True,False)
參數:無
示例:
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)
參數:無
示例:
"I Love Python".istitle() #各單詞的首字母均為大寫,其余字母為小寫
True
"I love python".istitle()
False
"I LOVE PYTHON".istitle()
False
"我愛Python".istitle() #存在其它非字母字符,
Tru
七、字符串修剪
32、strip()
描述:該函數的作用是去除字符串開頭和結尾處指定的字符,不會去除字符串中間對應的字符
語法:str.strip(chars)
參數:chars -- 要去除的字符 默認為空格或換行符。
示例:
#默認參數,去除了空格,\n \t \r字符,且未除去字符串中間相應的字符
a = ' \n111 aaa '
print(a.strip())
111 aaa
#去除兩端的指定字符
b='.-.word:我很帥.-.'
print(b.strip('.-.'))
word:我很帥
c='參考:來自公眾號AI入門學習'
print(c.strip('參考:'))
來自公眾號AI入門學
33、lstrip()
描述:lstrip() 方法用於截掉字符串左邊的空格或指定字符。
語法:str.lstrip(chars)
參數:chars--要去除的字符 默認為空格或換行符。
示例:
#去除左邊指定字符
a = '--我愛Python--'
a.lstrip('--')
'我愛Python--'
#重復的值只需要寫一個
a.lstrip('-')
'我愛Python--'
34、 rstrip()
描述: 刪除 str 字符串末尾的指定字符(默認為空格)
語法:str.rstrip(chars)
參數: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()函數連用。 即:返回用於str.translate方法翻譯的轉換表。
語法:str.maketrans(intab, outtab,delchars)
參數:
- intab -- 字符串中要替代的字符組成的字符串。
- outtab -- 相應的映射字符的字符串。
- delchars -- 可選參數,表示要刪除的字符組成的字符串。
示例:
str.maketrans() 生成一個字符一對一映射的table,然后使用 translate(table) 對字符串S中的每個字符進行映射。
例如,現在想要對"I love fairy"做一個簡單的加密,將里面部分字符都替換為數字,這樣別人就不知道轉換后的這句話是什么意思。
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]) 給定了第三個參數z,這這個參數字符串中的每個字符都會被映射為None。
#'yo'都會被隱藏了
map_table=str.maketrans(in_str,out_str,'yo')
my_love='I love fairy'
my_love.translate(map_table)
'I lve 21
36、translate()
描述:過濾(刪除),翻譯字符串。即根據maketrans()函數給出的字符映射轉換表來轉換字符串中的字符。
注:translate()函數是先過濾(刪除),再根據maketrans()函數返回的轉換表來翻譯。
語法:str.translate(table)
參數:
示例:
見上述案例
九、分割字符串
37、partition()
描述:根據指定的分隔符(sep)將字符串進行分割。從字符串左邊開始索引分隔符sep,索引到則停止索引。
語法: str.partition(sep)
參數: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類型
tup
38、rpartition()
描述:根據指定的分隔符(sep)將字符串進行分割。從字符串右邊(末尾)開始索引分隔符sep,索引到則停止索引。
語法: str.rpartition(sep)
參數:sep —— 指定的分隔符。
返回值: (head, sep, tail) 返回一個三元元組,head:分隔符sep前的字符串,sep:分隔符本身,tail:分隔符sep后的字符串。如果字符串包含指定的分隔符sep,則返回一個三元元組,第一個為分隔符sep左邊的子字符串,第二個為分隔符sep本身,第三個為分隔符sep右邊的子字符串。如果字符串不包含指定的分隔符sep,仍然返回一個三元元組,第一個元素為字符串本身,第二第三個元素為空字符串。
注:rpartition()函數與partition()函數用法相似,rpartition()函數從右邊(末尾)開始索引,partition()函數從左邊開始索引。
示例:
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 —— 最大分割參數,默認參數為-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()函數,只不過 rsplit()函數是從字符串右邊(末尾)開始分割。
語法:str.rsplit(sep=None, maxsplit=-1) -> list of strings 返回 字符串列表 或str.rsplit(sep=None, maxsplit=-1)[n]
參數:
- sep —— 分隔符,默認為空格,但不能為空即(")。
- maxsplit —— 最大分割參數,默認參數為-1。
- [n] —— 返回列表中下標為n的元素。列表索引的用法。
示例:
# 只搜索到一個sep時,兩者結果相同
'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])
參數:keepends -- 在輸出結果里是否去掉行界符('\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中經常看到join,特別是在自然語言處理的時候,分詞什么的,但是很多初學者不理解其中的意思,這里進行詳細的介紹,希望對大家能有幫助。
將可迭代對象(iterable)中的字符串使用string連接起來。注意,iterable中必須全部是字符串類型,否則報錯。如果你還是python的初學者,還不知道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參與迭代的部分必須是字符串類型,不能包含數字或其他類型。
L1=(1,2,3)
'_'.join(L1)
TypeError: sequence item 0: expected str instance, int found
以下兩種也不能join。
L1=('ab',2)
L2=('AB',{'a','
九、字符串替換
43、replace()函數
描述:把str.中的 old 替換成 new,如果 count 指定,則替換不超過 count次.。
語法:str.replace(old, new, count)
參數:
- old —— 將被替換的子字符串。
- new —— 新子字符串,用於替換old子字符串。
- count —— 替換的次數,默認全部替換。
案例:
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 jav
44、expandtabs()
描述:將字符串S中的 \t 替換為一定數量的空格。默認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'
十、統計字符次數
45、count()
描述:統計字符串里某個字符出現的次數。可以選擇字符串索引的起始位置和結束位置。
語法:str.count("char", start,end) 或 str.count("char")
- str —— 為要統計的字符(可以是單字符,也可以是多字符)。
- star —— 為索引字符串的起始位置,默認參數為0。
- end —— 為索引字符串的結束位置,默認參數為字符串長度即len(str)。
示例:
'abc--qo-ab'.count('ab')
2
#從第二位開始查找
'abc--qo-ab'.count('ab',1)
1
#不包括邊界
'abc--qo-ab'.count('ab',1,9)