字符串
字符串就是一串字符筛武,是編程語言中表示文本的數(shù)據(jù)類型
在python中可以使用一對雙引號或者和一對單引號定義一個字符串
雖然可以使用\"或者\'做字符串的轉(zhuǎn)義暖侨,但是在實際開發(fā)中:
如果字符串內(nèi)部需要使用"逼庞,可以使用'定義字符串
如果字符串內(nèi)部需要使用'届吁,可以使用"定義字符串
可以使用索引獲取一個字符串中指定位置的字符李茫,索引計數(shù)從0開始
也可以使用for循環(huán)遍歷字符串中每一個字符
大多數(shù)編程語言都使用”來定義字符串
string = "abc"
for str in string:
? ? print(str)
字符串常用方法
字符串的方法有很多,但就是因為有了這么多的方法知押,我們才可以對字符串做更復(fù)雜的操作叹螟,下面把所有方法分為十部分:
一、大小寫轉(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()
描述:返回一個滿足標(biāo)題格式的字符串爷恳。即所有英文單詞首字母大寫,其余英文字母小寫象踊。
語法: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 —— 要填充的單字符次屠,默認(rèn)為空格。
示例:
'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填充(默認(rèn)為空格)至指定長度的新字符串帅矗。如果指定的長度小于原字符串的長度則返回原字符串。
語法:?str.ljust(width, fillchar) -> str 返回一個新的字符串
width —— 指定字符串的輸出長度煞烫。
fillchar—— 將要填充的單字符浑此,默認(rèn)為空格。
示例:
'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填充(默認(rèn)為空格)至指定長度的新字符串凛俱。如果指定的長度小于原字符串的長度則返回原字符串。
語法:?str.ljust(width, fillchar)
width —— 指定字符串的輸出長度料饥。
fillchar—— 將要填充的單字符蒲犬,默認(rèn)為空格。
示例:
'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))0000056783000000003409877667210000000326#等價于用0填充的右對齊[id.rjust(10,'0') for id in L]['0000056783', '0000000034', '0987766721', '0000000326
三唯欣、字符串編碼
11嘹吨、encode()
描述:以指定的編碼格式編碼字符串,默認(rèn)編碼為 'utf-8'境氢。encode英文原意 編碼蟀拷。
語法:str.encode(encoding='utf-8', errors='strict')
encoding 參數(shù)可選,即要使用的編碼萍聊,默認(rèn)編碼為 'utf-8'问芬。字符串編碼常用類型有:utf-8,gb2312脐区,cp936愈诚,gbk等。
errors 參數(shù)可選牛隅,設(shè)置不同錯誤的處理方案炕柔。默認(rèn)為 '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 指定的編碼格式解碼字符串,默認(rèn)編碼為字符串編碼默伍。decode英文意思是 解碼欢嘿,
語法:str.decode(encoding='utf-8', errors='strict')
encoding ——要使用的編碼,如:utf-8,gb2312,cp936,gbk等也糊。
errors ——設(shè)置不同解碼錯誤的處理方案炼蹦。默認(rèn)為 'strict',意為編碼錯誤引起一個 UnicodeDecodeError。其它可能得值有 'ignore', 'replace'以及通過 codecs.register_error() 注冊的1其它值狸剃。
示例:
str1 = "我愛學(xué)習(xí)".encode(encoding="utf-8")str1b'\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 —索引的起始位置探颈。默認(rèn)值為0。
end —索引的結(jié)束位置训措。默認(rèn)值為字符串長度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',返回-1
14、rfind()
描述:查找字符串中指定的子字符串sub最后一次出現(xiàn)的位置架馋,可以規(guī)定字符串的索引查找范圍狞山。若無則返回 -1全闷。
語法:str.rfind(sub,start,end) -> int 返回整數(shù)
參數(shù):
sum —要索引的子字符串叉寂。
start —索引的起始位置。默認(rèn)值為0总珠。
end —索引的結(jié)束位置屏鳍。默認(rèn)值為字符串長度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,12
15山涡、index()
描述:查找字符串中第一次出現(xiàn)的子字符串的位置,可以規(guī)定字符串的索引查找范圍[star,end)唆迁。若無則會報錯鸭丛。
語法:str.index(sub, start, end) -> int 返回整數(shù)
參數(shù):
sub —— 查找的子字符串。
start —— 索引的起始位置唐责,默認(rèn)為0鳞溉。
end —— 索引的結(jié)束位置,默認(rèn)為字符串的長度鼠哥。
示例:
"I love python".index("o") #默認(rèn)索引整個字符串"I love python".index("o",4)? #索引 ve python11"I love python".index("o",4,12) #索引 ve pytho11"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 —— 索引的起始位置恍飘,默認(rèn)為0榨崩。
end —— 索引的結(jié)束位置,默認(rèn)為字符串的長度章母。
示例:
"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()彩郊,它增強了字符串格式化的功能前弯。基本語法是通過?{}?和?:?來代替以前的?%?秫逝。使用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=3y=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é)尾≈粞—> 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,否者返回FalseTrue"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妇斤,否者返回FalseTrue"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()#存在空格返回FalseFalse"Ilovepython".isalpha()True"Ilovepython123".isalpha()False
23、isdecimal()
描述:檢查字符串是否只包含十進制字符融求。字符串中若只包含十進制字符返回True咬像,否則返回False。該方法只存在于unicode對象中生宛。注意:定義一個十進制字符串县昂,只需要在字符串前添加前綴 'u' 即可。
語法:?str.isdecimal() -> bool 返回值為布爾類型(True,False)
參數(shù):無
示例:
"123456".isdecimal()Trueu"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ù)字輸出FalseFalse"①".isdigit()True
25、isidentifier()
描述:判斷str是否是有效的標(biāo)識符仰剿。str為符合命名規(guī)則的變量创淡,保留標(biāo)識符則返回True,否者返回False。
語法:str.isidentifier() -> bool 返回值為布爾類型(True,False)
參數(shù):無
示例:
"123".isidentifier()? #變量名為123False"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())Trueprint(str2.isspace())Falseprint(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 -- 要去除的字符 默認(rèn)為空格或換行符饰躲。
示例:
#默認(rèn)參數(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('參考:'))
33妄壶、lstrip()
描述:lstrip() 方法用于截掉字符串左邊的空格或指定字符。
語法:str.lstrip(chars)
參數(shù):chars--要去除的字符 默認(rèn)為空格或換行符寄狼。
示例:
#去除左邊指定字符a = '--我愛Python--'a.lstrip('--')'我愛Python--'#重復(fù)的值只需要寫一個a.lstrip('-')'我愛Python--'
34丁寄、 rstrip()
描述:?刪除 str 字符串末尾的指定字符(默認(rèn)為空格)
語法:str.rstrip(chars)
參數(shù):chars --要去除的字符 默認(rèn)為空格或換行符。
示例:
#去除左邊指定字符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 21
36、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 —— 分隔符,默認(rèn)為空格,但不能為空即(")含潘。
maxsplit —— 最大分割參數(shù),默認(rèn)參數(shù)為-1线婚。
[n] —— 返回列表中下標(biāo)為n的元素遏弱。列表索引的用法。
示例:
#默認(rèn)空格分割str1 = "I love python"str1.split()['I', 'love', 'python']#取第三位str1.split()[2]'python'#以"."為分隔符,maxsplit默認(rèn)為-1str2 = '列夫·尼古拉耶維奇·托爾斯泰'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 —— 分隔符诀黍,默認(rèn)為空格,但不能為空即(")袋坑。
maxsplit —— 最大分割參數(shù),默認(rèn)參數(shù)為-1眯勾。
[n] —— 返回列表中下標(biāo)為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'等)分隔翅娶,返回一個包含各行作為元素的列表文留,默認(rèn)不包含換行符。\n 換行符 \r 回車符 \r\n 回車+換行
語法:S.splitlines([keepends=False])
參數(shù):keepends -- 在輸出結(jié)果里是否去掉行界符('\r', '\r\n', \n'等)竭沫,默認(rè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)常看到j(luò)oin恨胚,特別是在自然語言處理的時候骂因,分詞什么的,但是很多初學(xué)者不理解其中的意思赃泡,這里進行詳細(xì)的介紹寒波,希望對大家能有幫助。將可迭代對象(iterable)中的字符串使用string連接起來升熊。注意俄烁,iterable中必須全部是字符串類型,否則報錯级野。如果你還是python的初學(xué)者页屠,還不知道iterable是什么,卻想來看看join的具體語法,那么你可以暫時將它理解為:字符串string卷中、列表list矛双、元組tuple、字典dict蟆豫、集合set议忽。當(dāng)然還有生成器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()
描述:把str.中的 old 替換成 new,如果 count 指定,則替換不超過 count次.蔓榄。
語法:str.replace(old, new, count)
參數(shù):
old —— 將被替換的子字符串并炮。
new —— 新子字符串,用于替換old子字符串甥郑。
count —— 替換的次數(shù)逃魄,默認(rèn)全部替換。
示例:
s = "我的小伙伴張三"s.replace("張三","馬云")'我的小伙伴馬云's = "I love python"#默認(rèn)字符串中的全部"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ù)量的空格。默認(rèn)N=8勉躺。
語法:str.expandtabs(tabsize=8)
tabsize 的默認(rèn)值為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ù)∠ィ可以選擇字符串索引的起始位置和結(jié)束位置糖赔。
語法:str.count("char", start,end) 或 str.count("char")
str —— 為要統(tǒng)計的字符(可以是單字符,也可以是多字符)轩端。
star —— 為索引字符串的起始位置放典,默認(rèn)參數(shù)為0。
end —— 為索引字符串的結(jié)束位置,默認(rèn)參數(shù)為字符串長度即len(str)奋构。
示例:
'abc--qo-ab'.count('ab')2#從第二位開始查找'abc--qo-ab'.count('ab',1)1#不包括邊界'abc--qo-ab'.count('ab',1,9)0
切片
切片方法適用于字符串壳影、列表、元組
切片使用索引值來限定范圍弥臼,從一個大的字符串中切出小的字符串
列表和元組都是有序的集合宴咧,都能夠通過索引值獲取到對應(yīng)的數(shù)據(jù),字典是一個無序的集合径缅,是使用鍵值對保存數(shù)據(jù)
從前至后排序索引為0....x,從后至前索引為-1....-(x+1)
2020.7.26