參考鏈接: 如何檢查字符串在Python中是否為有效關(guān)鍵字?
目錄?
1.0 capitalize()函數(shù)?
2.0 title()函數(shù)?
3.0 swapcase()函數(shù)?
4.0 lower()函數(shù)?
5.0 upper()函數(shù)?
6.0 casefold()函數(shù)?
7.0 center()函數(shù)?
8.0 ljust()函數(shù)?
9.0 rjust()函數(shù)?
10.0 zfill()函數(shù)?
11.0 count()函數(shù)?
12.0 encode()函數(shù)?
13.0 decode()函數(shù)?
14.0 expandtabs()函數(shù)?
15.0 find()函數(shù)?
16.0 rfind()函數(shù)?
17.0 index()函數(shù)?
18.0 rindex()函數(shù)?
19.0 format()函數(shù)?
20.0 format_map()函數(shù)?
21.0 endswith()函數(shù)?
22.0 startswith()函數(shù)?
23.0 isalnum()函數(shù)?
24.0 isalpha()函數(shù)?
25.0 isdecimal()函數(shù)?
26.0 isdigit()函數(shù)?
27.0 isidentifier()函數(shù)?
28.0? islower()函數(shù)?
29.0 isupper()函數(shù)?
30.0 isnumeric()函數(shù)?
31.0 isprintable()函數(shù)?
32.0 isspace()函數(shù)?
33.0 istitle()函數(shù)?
34.0? strip()函數(shù)?
35.0 lstrip()函數(shù)?
36. rstrip()函數(shù)?
37.0 maketrans()函數(shù)?
38.0 translate()函數(shù)?
39.0 partition()函數(shù)?
40.0? rpartition()函數(shù)?
41.0? split()函數(shù)?
42.0? rsplit()函數(shù)?
43.0 splitlines()函數(shù)?
44.0 join()函數(shù)?
45.0 replace()函數(shù)?
?序言:?
?字符串屬于序列類型相种,根據(jù)字符串內(nèi)容的多少可以將字符串分為單行字符串和多行字符串汞贸。其中單行字符串可以由一對雙引號(" ")或一對單引號(' ')表示肝箱,單引號和雙引號等效坤检。多行字符串可由一對三單引號(''' ''')或一對三雙引號(""" """)表示叹谁,三單引號和三雙引號也等效饲梭。?
解決英文單詞大小寫問題:?
1.0 capitalize()函數(shù)?
描述:將字符串的第一個字母變成大寫,其余字母變?yōu)樾憽?
語法:str.capitalize()? —> str 返回字符串?
程序示例:?
str1 = "i Love python"
str2 = " i Love python" #字母i前有空格
str3 = "I Love python"
print(str1.capitalize())
print(str2.capitalize())
print(str3.capitalize())?
程序運行結(jié)果:??
I love python
?i love python
I love python?
2.0 title()函數(shù)?
描述:返回一個滿足標(biāo)題格式的字符串焰檩。即所有英文單詞首字母大寫憔涉,其余英文字母小寫。?
語法:str.title() -> str 返回一個字符串?
程序示例:?
str = "i love python"
print(str.title()) #將字符串str的所有單詞首字母大寫析苫,其余字母小寫?
程序運行結(jié)果:??
I Love Python?
3.0 swapcase()函數(shù)?
描述:將字符串str中的大小寫字母同時進(jìn)行互換监氢。即將字符串str中的大寫字母轉(zhuǎn)換為小寫字母布蔗,將小寫字母轉(zhuǎn)換為大寫字母。?
語法:str.swapcase() -> str 返回字符串?
程序示例:?
str1 = "I Love PYTHON"
str2 = "我愛python Python pYTHON"
print(str1.swapcase()) #將字符串str1中的大寫字母轉(zhuǎn)為小寫字母浪腐,小寫字母轉(zhuǎn)換為大寫字母纵揍。
print(str2.swapcase())?
程序運行結(jié)果:?
i lOVE python
我愛PYTHON pYTHON Python?
4.0 lower()函數(shù)?
描述:將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母。?
語法:str.lower()? -> str? 返回字符串?
程序示例:?
str1 = "I Love Python"
str2 = "Gro? - α" #德語 大寫α
print(str1.casefold())
print(str1.lower())
print(str2.casefold())
print(str2.lower())?
程序運行結(jié)果:?
i love python
i love python
gross - α
gro? - α?
注意 lower()函數(shù)和casefold()函數(shù)的區(qū)別:?
lower() 方法只對ASCII編碼议街,即‘A-Z’有效泽谨,對于其它語言中把大寫轉(zhuǎn)換為小寫的情況無效,只能用 casefold() 函數(shù)特漩。?
5.0 upper()函數(shù)?
描述:將字符串中的所有小寫字母轉(zhuǎn)換為大寫字母吧雹。?
語法: str.upper() -> str? 返回字符串?
程序示例:?
str1 = "i love python"? #全為小寫字母
str2 = "I Love Python"? #所有單詞首字母大寫
print(str1.upper())
print(str2.upper())?
程序運行結(jié)果:?
I LOVE PYTHON
I LOVE PYTHON?
6.0 casefold()函數(shù)?
描述:將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母。也可以將非英文 語言中的大寫轉(zhuǎn)換為小寫涂身。?
注意 lower()函數(shù)和casefold()函數(shù)的區(qū)別:lower() 方法只對ASCII編碼雄卷,即‘A-Z’有效,對于其它語言中把大寫轉(zhuǎn)換為小寫的情況無效蛤售,只能用 casefold() 函數(shù)丁鹉。?
語法:str.casefold()? ?-> str 返回字符串?
程序示例:?
str1 = "I Love Python"
str2 = "Gro? - α" #德語 大寫α
print(str1.casefold())
print(str1.lower())
print(str2.casefold())
print(str2.lower())?
程序運行結(jié)果:?
i love python
i love python
gross - α
gro? - α?
解決字符串填充問題:?
7.0 center()函數(shù)?
描述:返回一個長度為width,兩邊用fillchar(單字符)填充的字符串,即字符串str居中悴能,兩邊用fillchar填充揣钦。若字符串的長度大于width,則直接返回字符串str。?
語法:str.center(width , "fillchar")? -> str? 返回字符串? ? ? ?注意:引號不可省?
width —— 指定字符串長度漠酿。fillchar —— 要填充的單字符冯凹,默認(rèn)為空格。
程序示例:?
str = "i love python"
print(str.center(20,"*")) #指定字符串長度為20 用單字符"*"填充
print(str.center(1,"*")) #指定字符串長度為1炒嘲,小于原字符串的長度宇姚。
print(str.center(20,"8"))
print(str.center(20)) #fillchar 默認(rèn)為空格?
程序運行結(jié)果:?
***i love python****
i love python
888i love python8888
? ?i love python? ?
8.0 ljust()函數(shù)?
描述:返回一個原字符串左對齊,并使用fillchar填充(默認(rèn)為空格)至指定長度的新字符串。如果指定的長度小于原字符串的長度則返回原字符串夫凸。?
語法: str.ljust(width, fillchar)? -> str 返回一個新的字符串?
width —— 指定字符串的輸出長度空凸。fillchar—— 將要填充的單字符,默認(rèn)為空格寸痢。
程序示例:?
str = "python"
print(str.ljust(30,"*")) #指定寬度為30,填充字符為*
print(str.ljust(30))? #指定寬度為30紊选,填充字符默認(rèn)為空格
print(str.ljust(30),"1") #對比?
程序運行結(jié)果:?
python************************
python? ? ? ? ? ? ? ? ? ? ? ??
python? ? ? ? ? ? ? ? ? ? ? ? ?1?
9.0 rjust()函數(shù)?
描述:返回一個原字符串右對齊,并使用fillchar填充(默認(rèn)為空格)至指定長度的新字符串啼止。如果指定的長度小于原字符串的長度則返回原字符串。?
語法: str.ljust(width, fillchar)? -> str 返回一個新的字符串?
width —— 指定字符串的輸出長度兵罢。fillchar—— 將要填充的單字符献烦,默認(rèn)為空格。
程序示例:?
str = "python"
print(str.rjust(30,"*")) #指定寬度為30卖词,填充字符為*
print(str.rjust(30))? #指定寬度為30巩那,填充字符默認(rèn)為空格
print("1",str.rjust(30)) #對比?
程序運行結(jié)果:?
************************python
? ? ? ? ? ? ? ? ? ? ? ? python
1? ? ? ? ? ? ? ? ? ? ? ? ?python?
10.0 zfill()函數(shù)?
描述:返回指定長度的字符串吏夯,使原字符串右對齊,前面用0填充到指定字符串長度即横。?
語法:str.zfill(width) -> str 返回一個字符串?
width —— 指定字符串的長度,但不能為空噪生。若指定長度小于字符串長度,則直接輸出原字符串东囚。
程序示例:?
str = "i love python"
print(str.zfill(30)) #指定字符串長度為30
print(str.zfill(2)) #指定字符串長度為2跺嗽,小于原字符串長度。
print(str.zfill()) #參數(shù)width為空页藻,報錯.?
程序運行結(jié)果:?
00000000000000000i love python
i love python
---------------------------------------------------------------------------
TypeError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Traceback (most recent call last)
<ipython-input-22-45e4baf7a246> in <module>()
? ? ? 2 print(str.zfill(30)) #指定字符串長度為30
? ? ? 3 print(str.zfill(2)) #指定字符串長度為2,小于原字符串長度。
----> 4 print(str.zfill()) #參數(shù)width為空万俗,報錯.
TypeError: zfill() takes exactly 1 argument (0 given)
解決統(tǒng)計字符次數(shù)問題:?
11.0 count()函數(shù)?
描述:統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù)词疼。可以選擇字符串索引的起始位置和結(jié)束位置废境。? ? ? ? ? ??
語法:str.count("char", start,end)? 或 str.count("char")? ? -> int? ? 返回整數(shù)?
str —— 為要統(tǒng)計的字符(可以是單字符畜挨,也可以是多字符)。star —— 為索引字符串的起始位置彬坏,默認(rèn)參數(shù)為0朦促。end —— 為索引字符串的結(jié)束位置,默認(rèn)參數(shù)為字符串長度即len(str)栓始。
程序示例:?
str = "i love python,i am learning python"
print(str.count("i")) #star 和end 為默認(rèn)參數(shù)
print(str.count("i",2)) # star值為2务冕,end值為默認(rèn)參數(shù)
print(str.count("i",2,5)) #star值為2,end值為5
print(str.count("am"))? #多字符統(tǒng)計?
程序運行結(jié)果:?
3
2
0
1?
解決編碼問題:?
12.0 encode()函數(shù)?
描述:以指定的編碼格式編碼字符串幻赚,默認(rèn)編碼為 'utf-8'禀忆。?
語法:str.encode(encoding='utf-8', errors='strict')? ? ?-> bytes (獲得bytes類型對象)?
encoding 參數(shù)可選,即要使用的編碼落恼,默認(rèn)編碼為 'utf-8'箩退。字符串編碼常用類型有:utf-8,gb2312,cp936,gbk等。errors 參數(shù)可選佳谦,設(shè)置不同錯誤的處理方案戴涝。默認(rèn)為 'strict',意為編碼錯誤引起一個UnicodeEncodeError。 其它可能值有 'ignore', 'replace', 'xmlcharrefreplace'以及通過 codecs.register_error() 注冊其它的值钻蔑。
程序示例:?
str1 = "我愛祖國"
str2 = "I love my country"
print("utf8編碼:",str1.encode(encoding="utf8",errors="strict")) #等價于print("utf8編碼:",str1.encode("utf8"))
print("utf8編碼:",str2.encode(encoding="utf8",errors="strict"))
print("gb2312編碼:",str1.encode(encoding="gb2312",errors="strict"))#以gb2312編碼格式對str1進(jìn)行編碼啥刻,獲得bytes類型對象的str
print("gb2312編碼:",str2.encode(encoding="gb2312",errors="strict"))
print("cp936編碼:",str1.encode(encoding="cp936",errors="strict"))
print("cp936編碼:",str2.encode(encoding="cp936",errors="strict"))
print("gbk編碼:",str1.encode(encoding="gbk",errors="strict"))
print("gbk編碼:",str2.encode(encoding="gbk",errors="strict"))?
程序運行結(jié)果:?
utf8編碼: b'\xe6\x88\x91\xe7\x88\xb1\xe7\xa5\x96\xe5\x9b\xbd'
utf8編碼: b'I love my country'
gb2312編碼: b'\xce\xd2\xb0\xae\xd7\xe6\xb9\xfa'
gb2312編碼: b'I love my country'
cp936編碼: b'\xce\xd2\xb0\xae\xd7\xe6\xb9\xfa'
cp936編碼: b'I love my country'
gbk編碼: b'\xce\xd2\xb0\xae\xd7\xe6\xb9\xfa'
gbk編碼: b'I love my country'
注:在python中encode和decode分別指編碼和解碼?
13.0 decode()函數(shù)?
描述:以 encoding 指定的編碼格式解碼字符串,默認(rèn)編碼為字符串編碼咪笑。?
語法: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其它值蓄拣。?
程序示例:?
s = "我愛祖國"
str1 = s.encode(encoding="utf-8",errors="strict")
str2 = s.encode("gb2312") #編碼錯誤的處理方案默認(rèn)為"strict"
str3 = s.encode("gbk")
print(str1.decode(encoding="utf-8",errors="strict"))#用utf-8的解碼格式,解碼str1.
print(str1.decode(encoding="gbk",errors="ignore"))##如果以gbk的解碼格式對str1進(jìn)行解碼得努隙,將無法還原原來的字符串內(nèi)容
print(str1.decode(encoding="gbk",errors="strict"))
print(str1.decode(encoding="gbk",errors="replace"))
print("\n")
print(str2.decode("gb2312"))
print(str3.decode("gbk"))?
程序運行結(jié)果:?
我愛祖國
鎴戠埍紲栧浗
鎴戠埍紲栧浗
鎴戠埍紲栧浗
我愛祖國
我愛祖國?
?注:在python3.x中球恤,encode()函數(shù)只能用于字符串類型,而decode()函數(shù)只能用于字節(jié)數(shù)據(jù)類型剃法。?
程序示例中 str1,str2,str3都是字節(jié)數(shù)據(jù)類型(通過encode()函數(shù)把 字符串類型s 轉(zhuǎn)換為字節(jié)數(shù)據(jù)類型)碎捺。?
14.0 expandtabs()函數(shù)?
描述:返回一個字符串的副本。使原字符串中的制表符("\t")的使用空間變大贷洲。使用空格來擴(kuò)展空間收厨。?
語法: str.expandtabs(tabsize=8)? —> str? 返回字符串?
tabsize 的默認(rèn)值為8。tabsize值為0到7等效于tabsize=8优构。tabsize每增加1诵叁,原字符串中“\t”的空間會多加一個空格。
程序示例:?
str = "i love\tpython"
print(str.expandtabs())#默認(rèn)值為8
print(str.expandtabs(tabsize=8))
print(str.expandtabs())
print(str.expandtabs(2)) #tabsize值為0到7钦椭,與tabsize值為8相同
print(str.expandtabs(tabsize=2))
print(str.expandtabs(tabsize=9))? ? ??
print(str.expandtabs(tabsize=10))?
程序運行結(jié)果:?
i love? python
i love? python
i love? python
i love? python
i love? python
i love? ?python
i love? ? python?
解決查找指定字符(子字符串)位置問題:?
15.0 find()函數(shù)?
描述:查找字符串中指定的子字符串sub第一次出現(xiàn)的位置拧额,可以規(guī)定字符串的索引查找范圍。若無則返回 -1彪腔。?
語法:str.find(sub,start,end) -> int 返回整數(shù)?
sum —要索引的子字符串侥锦。start —索引的起始位置。默認(rèn)值為0德挣。end —索引的結(jié)束位置恭垦。默認(rèn)值為字符串長度len(str)。[start,end) 不包括end格嗅。
程序示例:?
str = "i love python"
print(str.find("o")) #索引子字符串"o"
print(str.find("0",4))#索引起始位置為4 索引范圍為:ve python
print(str.find("o",4,12))#索引起始位置為4,結(jié)束位置為12 索引范圍為:ve pytho
print(str.find(""))
print(str.find(" "))#返回第一個空格出現(xiàn)的位置番挺。
print(str.find("k")) #索引子字符串"k",不存在,返回-1
程序運行結(jié)果:?
3
-1
11
0
1
-1?
16.0 rfind()函數(shù)?
描述:查找字符串中指定的子字符串sub最后一次出現(xiàn)的位置屯掖,可以規(guī)定字符串的索引查找范圍玄柏。若無則返回 -1。?
語法:str.rfind(sub,start,end) -> int 返回整數(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)的位置间坐。?
程序示例:?
str = "i love python python"
print(str.rfind("o")) #默認(rèn)索引整個字符串str
print(str.rfind("o",11)) #索引范圍為:on python
print(str.rfind("o",0,12)) #索引范圍為 i love pytho
print(str.rfind("python")) #返回最后一次出現(xiàn)"python"的位置,即字母"p"最后一次出現(xiàn)的位置灾挨。
print(str.rfind("")) #等效于返回字符串str的長度邑退。
print(str.rfind(" "))#返回最后一個空格出現(xiàn)的位置
print(str.rfind("2"))? #字符串str中不存在字符"2",返回值為 -1?
程序運行結(jié)果:?
18
18
11
14
20
13
-1?
17.0 index()函數(shù)??
描述:查找字符串中第一次出現(xiàn)的子字符串的位置,可以規(guī)定字符串的索引查找范圍[star,end)劳澄。若無則會報錯地技。?
語法:str.index(sub, start, end)? -> int? 返回整數(shù)?
sub —— 查找的子字符串。start —— 索引的起始位置秒拔,默認(rèn)為0莫矗。end? —— 索引的結(jié)束位置,默認(rèn)為字符串的長度砂缩。[star,end)
程序示例:?
str = "i love python"
print(str.index("o"))? #默認(rèn)索引整個字符串
print(str.index("o",4))? #索引 ve python
print(str.index("o",4,12)) #索引 ve pytho
print(str.index("love"))? ? #索引多個字符
print(str.index("k"))? ? #索引字符串不存在作谚,報錯?
?程序運行結(jié)果:?
3
11
11
2
---------------------------------------------------------------------------
ValueError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
<ipython-input-90-a880e13b1574> in <module>()
? ? ? 4 print(str.index("o",4,12)) #索引 ve pytho
? ? ? 5 print(str.index("love"))? ? #索引多個字符
----> 6 print(str.index("k"))
ValueError: substring not found
? ?注:index()函數(shù)和find()函數(shù)類似,但index()函數(shù)沒有找到子字符串會報錯庵芭。?
18.0 rindex()函數(shù)?
描述:查找字符串中最后一次出現(xiàn)的子字符串的位置妹懒,可以規(guī)定字符串的索引查找范圍[star,end),若無則會報錯双吆。?
語法:str.rindex(sub, start, end) -> int? ?返回整數(shù)眨唬。?
sub —— 查找的子字符串。start —— 索引的起始位置好乐,默認(rèn)為0匾竿。end? ——? 索引的結(jié)束位置,默認(rèn)為字符串的長度蔚万。[star,end)
注:rindex()函數(shù)用法與index()函數(shù)相似岭妖,rindex()函數(shù)返回指定子字符串最后一次出現(xiàn)的位置,index()函數(shù)返回指定子字符串第一次出現(xiàn)的位置笛坦。?
程序示例:?
str = "i love python python"
print(str.rindex("p")) #默認(rèn)索引整個字符串
print(str.rindex("o",5)) #索引的范圍為:e python python
print(str.rindex("o",5,13)) #索引范圍為:e python
print(str.rindex("python")) #返回最后一次出現(xiàn)"python"的位置,即字母"p"最后一次出現(xiàn)的位置区转。
print(str.rindex("k"))? #索引字符串不存在,報錯
len(str),str[5:13]?
程序運行結(jié)果:?
14
18
11
14
---------------------------------------------------------------------------
ValueError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
<ipython-input-116-44cc5c1acea1> in <module>()
? ? ? 4 print(str.rindex("o",5,13)) #索引范圍為:e python
? ? ? 5 print(str.rindex("python")) #返回最后一次出現(xiàn)"python"的位置,即字母"p"最后一次出現(xiàn)的位置版扩。
----> 6 print(str.rindex("k"))
? ? ? 7 len(str),str[5:13]
ValueError: substring not found
解決格式化輸出問題:?
19.0 format()函數(shù)?
描述:返回一個格式化的字符串废离。?
語法:str.format(*args, **kwargs) ——> str 返回字符串? ? [模板字符串].format(逗號分隔的參數(shù))??
或? {參數(shù)序號:格式控制標(biāo)記}.format(逗號分隔的參數(shù))??
它是通過{}和:來代替%。模板字符串是一個由槽(用大括號{}來表示)和字符串組成的字符串礁芦,用來控制字符串的顯示效果蜻韭。大括號{}對應(yīng)著format()中逗號分隔的參數(shù)。
format()基本用法 :?
語法:[模板字符串].format(逗號分隔的參數(shù))??
? 通過位置??
程序示例:?
print("用法一:")
print("一日之計在于{}".format("晨"))
#如果模板字符串有多個槽{}柿扣,并且槽內(nèi)沒有指定的序號肖方,則按照槽{}出現(xiàn)的順序一一對應(yīng)format()函數(shù)中的不同參數(shù)
print("用法二:")
print("{}之計在于{}".format("一日","晨"))
#也可以通過在槽{}中指定format()函數(shù)中參數(shù)的序號來使用,參數(shù)是從0開始編號的未状。
print("用法三:")
print("{0}之計在于{1}".format("一日","晨"))
print("{1}之計在于{0}".format("晨","一日"))
# 如果想要在模板字符串中輸出大括號("{}"),則使用{{ 來表示 {? ?用 }} 來表示 }
print("用法四:")
print("{0}說得好:{{一{1}之計在于晨 一{2}之計在于春}}".format("俗話","日","年"))
#如果模板字符串中出現(xiàn)的槽{}和format()函數(shù)中參數(shù)個數(shù)不一致俯画,
#則必須要在槽{}中使用序號來指定參數(shù)的使用,否者會產(chǎn)生IndexError的錯誤司草。
print("用法五:")
print("{0}日之計在于晨, {0}年之計在于春".format("一"))
print("{}日之計在于晨, {}年之計在于春".format("一")) #槽中沒有指定參數(shù)序號艰垂,會報錯泡仗。?
程序運行結(jié)果:?
用法一:
一日之計在于晨
用法二:
一日之計在于晨
用法三:
一日之計在于晨
一日之計在于晨
用法四:
俗話說得好:{一日之計在于晨 一年之計在于春}
用法五:
一日之計在于晨, 一年之計在于春
---------------------------------------------------------------------------
IndexError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
<ipython-input-20-5f7b4f063a3b> in <module>()
? ? ?19 print("用法五:")
? ? ?20 print("{0}日之計在于晨, {0}年之計在于春".format("一"))
---> 21 print("{}日之計在于晨, {}年之計在于春".format("一")) #槽中沒有指定參數(shù)序號,會報錯猜憎。
IndexError: tuple index out of range?
? 通過關(guān)鍵字參數(shù)??
程序示例:??
print("{year}之計在于{season}".format(year="一年",season="春"))?
程序運行結(jié)果:?
一年之計在于春?
?通過列表? ?
程序示例:?
l = ["一日","晨","一年","春"]
a = ["一日","晨"]
b = ["一年","春"]
print("{0[0]}之計在于{0[1]}, {0[2]}之計在于{0[3]}".format(l))
#format()函數(shù)中的參數(shù)可以是一個或多個列表娩怎,但要注意槽中序號的差異。
print("{0[0]}之計在于{0[1]}, {1[0]}之計在于{1[1]}".format(a,b))??
程序運行結(jié)果:?
一日之計在于晨, 一年之計在于春
一日之計在于晨, 一年之計在于春?
?通過字典?
程序示例:?
d1 = {"year":"一年","season":"春"}
print(" {year}之計在于{season}".format(**d1))
d2 = {"time":["一日","一年"],"season":["晨","春"]}
print("{time[0]}之計在于{season[0]},{time[1]}之計在于{season[1]}".format(**d2))?
程序運行結(jié)果:?
一年之計在于春
一日之計在于晨,一年之計在于春
format()函數(shù)格式控制方法:?
語法:{參數(shù)序號:格式控制標(biāo)記}.format(逗號分隔的參數(shù))??
? 槽中格式控制標(biāo)記規(guī)則
? ? ? ? :? ? ? ? ? ?[填充]? ?[對齊]? ?[寬度]? ? ? ? ? ? ? ?[,]? ? ? ? ? ? ? [.精度]? ? ? ? ? ? [類型]引導(dǎo)符號要填充的單個字符 < 左對齊 > 右對齊 ^ 居中對齊 設(shè)定槽的輸出寬度 數(shù)字的千位分隔符 適用于整數(shù)和浮點數(shù)? ? 用于控制浮點數(shù)小數(shù)部分 的精度(長度) 或字符串的最大輸出長度? 整數(shù)類型:b,c,d,o,x,X 浮點數(shù)類型:e,E,f,%?
[填充]——只能填充單個字符胰柑。填充字符時截亦,一定要選擇對齊方式,否者會有 Invalid format specifier 的報錯?
[對齊]——默認(rèn)對齊方式為左對齊柬讨。?
[寬度]——指的是槽的輸出寬度崩瓤,當(dāng)槽的實際寬度比槽的設(shè)定寬度大,則輸出槽的實際寬度姐浮,否者按設(shè)定的寬度輸出谷遂。?
[類型]——解析如下表:?
? 整數(shù)和浮點數(shù)類型的輸出格式
?類型描述類型描述b輸出整數(shù)的二進(jìn)制形式e輸出浮點數(shù)對應(yīng)的小寫字母e的指數(shù)形式c輸出整數(shù)對應(yīng)的Unicode字符E輸出浮點數(shù)對應(yīng)的大寫字母E的指數(shù)形式d輸出整數(shù)的十進(jìn)制形式f輸出標(biāo)準(zhǔn)浮點數(shù)形式o輸出整數(shù)的八進(jìn)制形式%輸出浮點數(shù)的百分比形式x輸出整數(shù)的小寫十六進(jìn)制形式? X輸出整數(shù)的大寫寫十六進(jìn)制形式??
格式控制標(biāo)記規(guī)則:[填充], [對齊], [寬度], [,], [.精度], [類型]? 這六個規(guī)則是可以任意組合使用的,但要按以上順序使用卖鲤。不過一般可以分為兩組肾扰。?
?一組為:[填充] [對齊] [寬度]? ?主要用于規(guī)范字符串的顯示格式。?
程序示例:?
s = "厲害了蛋逾,我的國"
print("{0:30}".format(s))? #默認(rèn)為左對齊集晚,寬度為30,序號0可省
print("{0:>30}".format(s))? #右對齊??
print("{0:*>30}".format(s)) #填充*字符,右對齊
print("{0:*^30}".format(s)) #居中對齊
print("{0:*30}".format(s)) #填充字符時区匣,沒有選擇對齊方式偷拔,會有 Invalid format specifier 的報錯?
程序運行結(jié)果:?
厲害了,我的國? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?厲害了亏钩,我的國
***********************厲害了莲绰,我的國
***********厲害了,我的國************
---------------------------------------------------------------------------
ValueError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)
<ipython-input-86-959132fb938a> in <module>()
? ? ? 4 print("{0:*>30}".format(s)) #填充*字符姑丑,右對齊
? ? ? 5 print("{0:*^30}".format(s)) #居中對齊
----> 6 print("{0:*30}".format(s)) #填充字符時蛤签,沒有選擇對齊方式,會有 Invalid format specifier 的報錯
ValueError: Invalid format specifier
格式控制標(biāo)記規(guī)則也可以用變量來表示栅哀,即用槽{}來指定對應(yīng)的格式控制標(biāo)記規(guī)則震肮。?
程序示例:?
s = "厲害了,我的國"
a = "*"
b = "^"
c = 30
d = ["<","^",">"]
print("{0:{1}{2}{3}}".format(s,a,b,c))? #居中對齊留拾,寬度為30戳晌,填充字符為*
print("{0:{1}{2[2]}{3}}".format(s,a,d,c))#右對齊,用列表選擇對齊方式痴柔。
print("{0:{1}{2[0]}{3}}".format(s,a,d,c))??
? 程序運行結(jié)果:?
***********厲害了沦偎,我的國************
***********************厲害了,我的國
厲害了,我的國***********************?
? 另一組為:[,]? [.精度]? [類型]? ?主要于規(guī)范數(shù)字的輸出格式和控制字符串的輸出長度豪嚎。?
程序示例:?
print("{0:,}".format(123456789)) # 千位分隔符
print("{:,.3}".format(123456.123)) #保留3為有效數(shù)字
print("{:.3}".format("厲害了鸿捧,我的國")) # 輸出前三個字符
#輸出整數(shù)類型的格式化規(guī)則:
#print("輸出整數(shù)的二進(jìn)制形式:{0:b}\n輸出整數(shù)對應(yīng)的Unicode字符:{0:c}\n輸出整數(shù)的十進(jìn)制形式:{0:d}\n輸出整數(shù)的八進(jìn)制形式:{0:o}\n輸出整數(shù)的小寫十六進(jìn)制形式:{0:x}\n輸出整數(shù)的大寫寫十六進(jìn)制形式:{0:X}".format(123456))
# 等效于一下語句:
print("輸出整數(shù)的二進(jìn)制形式: {:b}".format(123456))
print("輸出整數(shù)對應(yīng)的Unicode字符: {:c}".format(123456))
print("輸出整數(shù)的十進(jìn)制形式: {:d}".format(123456))
print("輸出整數(shù)的八進(jìn)制形式: {:o}".format(123456))
print("輸出整數(shù)的小寫十六進(jìn)制形式: {:x}".format(123456))
print("輸出整數(shù)的大寫寫十六進(jìn)制形式: {:X}".format(123456))
#輸出浮點數(shù)類型的格式化規(guī)則:
print("輸出浮點數(shù)對應(yīng)的小寫字母e的指數(shù)形式: {:e}".format(123456.123456))
print("輸出浮點數(shù)對應(yīng)的大寫字母E的指數(shù)形式: {:E}".format(123456.123456))
print("輸出標(biāo)準(zhǔn)浮點數(shù)形式: {:f}".format(123456.123456))
print("輸出浮點數(shù)的百分比形式: {:%}".format(123456.123456))
#對比? [.精度]可以控制小數(shù)部分的輸出長度
print("輸出浮點數(shù)對應(yīng)的小寫字母e的指數(shù)形式: {:.3e}".format(123456.123456))
print("輸出浮點數(shù)對應(yīng)的大寫字母E的指數(shù)形式: {:.3E}".format(123456.123456))
print("輸出標(biāo)準(zhǔn)浮點數(shù)形式: {:.3f}".format(123456.123456))
print("輸出浮點數(shù)的百分比形式: {:.3%}".format(123456.123456))?
程序運行結(jié)果:?
123,456,789
1.23e+05
厲害了
輸出整數(shù)的二進(jìn)制形式: 11110001001000000
輸出整數(shù)對應(yīng)的Unicode字符: ?
輸出整數(shù)的十進(jìn)制形式: 123456
輸出整數(shù)的八進(jìn)制形式: 361100
輸出整數(shù)的小寫十六進(jìn)制形式: 1e240
輸出整數(shù)的大寫寫十六進(jìn)制形式: 1E240
輸出浮點數(shù)對應(yīng)的小寫字母e的指數(shù)形式: 1.234561e+05
輸出浮點數(shù)對應(yīng)的大寫字母E的指數(shù)形式: 1.234561E+05
輸出標(biāo)準(zhǔn)浮點數(shù)形式: 123456.123456
輸出浮點數(shù)的百分比形式: 12345612.345600%
輸出浮點數(shù)對應(yīng)的小寫字母e的指數(shù)形式: 1.235e+05
輸出浮點數(shù)對應(yīng)的大寫字母E的指數(shù)形式: 1.235E+05
輸出標(biāo)準(zhǔn)浮點數(shù)形式: 123456.123
輸出浮點數(shù)的百分比形式: 12345612.346%?
?綜合運用實例:?
程序示例:?
print("{:*^30,.2f}".format(123456.1235))#用*字符填充,居中對齊疙渣,寬度為30,千位分隔符堆巧,保留小數(shù)點后兩位妄荔,輸出標(biāo)準(zhǔn)浮點數(shù)
s = "一年有:"
a = 365.0000
b = "天"
print("{0:*>8}{1:,.1f}{2:*<5}".format(s,a,b))?
程序運行結(jié)果:?
**********123,456.12**********
****一年有:365.0天****?
20.0 format_map()函數(shù)?
描述:返回字符串的格式化版本。?
語法:str.format_map(mapping)? -> str 返回字符串?
程序示例:?
student = {"name":["張三","李四"],"idcard":[1,2]}
print("我的名字是{name[0]}谍肤,我的學(xué)號是{idcard[0]}".format_map(student))
print("我的名字是{name[0]}啦租,我的學(xué)號是{idcard[1]}".format_map(student))
print(["我的名字是{},我的學(xué)號是{}".format(*x) for x in zip(student["name"],student["idcard"])]) #以列表的形式輸出
print("我的名字是{}荒揣,我的學(xué)號是{}".format(*x) for x in zip(student["name"],student["idcard"]))
print(["我的名字是{}篷角,我的學(xué)號是{}".format(*x) for x in zip(*map(student.get,["name","idcard"]))]) #以列表的形式輸出
print("我的名字是{},我的學(xué)號是{}".format(*x) for x in zip(*map(student.get,["name","idcard"])))?
for i in range(len(student)):
? ? print("我的名字是{{name[0]}}系任,我的學(xué)號是{{idcard[0]}}".format(i).format_map(student))
? ? # {{ }} 等效于{ }? ?
程序運行結(jié)果:?
我的名字是張三恳蹲,我的學(xué)號是1
我的名字是張三,我的學(xué)號是2
['我的名字是張三俩滥,我的學(xué)號是1', '我的名字是李四嘉蕾,我的學(xué)號是2']
<generator object <genexpr> at 0x0000018F5E1CFF68>
['我的名字是張三,我的學(xué)號是1', '我的名字是李四霜旧,我的學(xué)號是2']
<generator object <genexpr> at 0x0000018F5E1CF200>
我的名字是張三错忱,我的學(xué)號是1
我的名字是張三,我的學(xué)號是1?
解決判斷問題(返回bool類型)?
21.0 endswith()函數(shù)?
描述:判斷字符串是否以指定字符或子字符串結(jié)尾挂据。?
語法:str.endswith("suffix", start, end) 或?
str[start,end].endswith("suffix")? ? 用于判斷字符串中某段字符串是否以指定字符或子字符串結(jié)尾以清。?
—> bool? ? 返回值為布爾類型(True,False)?
suffix — 后綴,可以是單個字符崎逃,也可以是字符串掷倔,還可以是元組("suffix"中的引號要省略,常用于判斷文件類型)婚脱。start —索引字符串的起始位置今魔。end — 索引字符串的結(jié)束位置。str.endswith(suffix)? star默認(rèn)為0障贸,end默認(rèn)為字符串的長度len(str)
? 注意:空字符的情況错森。返回值通常為True?
程序示例:?
str = "i love python"
print("1:",str.endswith("n"))?
print("2:",str.endswith("python"))
print("3:",str.endswith("n",0,6))# 索引 i love 是否以“n”結(jié)尾。
print("4:",str.endswith("")) #空字符
print("5:",str[0:6].endswith("n")) # 只索引 i love
print("6:",str[0:6].endswith("e"))
print("7:",str[0:6].endswith(""))
print("8:",str.endswith(("n","z")))#遍歷元組的元素篮洁,存在即返回True涩维,否者返回False
print("9:",str.endswith(("k","m")))
#元組案例
file = "python.txt"
if file.endswith("txt"):
? ? print("該文件是文本文件")
elif file.endswith(("AVI","WMV","RM")):
? ? print("該文件為視頻文件")
else:
? ? print("文件格式未知")
程序運行結(jié)果:?
1: True
2: True
3: False
4: True
5: False
6: True
7: True
8: True
9: False
該文件是文本文件?
22.0 startswith()函數(shù)?
描述:判斷字符串是否以指定字符或子字符串開頭。?
語法:str.endswith("suffix", start, end) 或?
str[start,end].endswith("suffix")? ? 用于判斷字符串中某段字符串是否以指定字符或子字符串結(jié)尾。?
—> bool? ? 返回值為布爾類型(True,False)?
suffix — 后綴瓦阐,可以是單個字符蜗侈,也可以是字符串,還可以是元組("suffix"中的引號要省略)睡蟋。start —索引字符串的起始位置踏幻。end — 索引字符串的結(jié)束位置。str.endswith(suffix)? star默認(rèn)為0戳杀,end默認(rèn)為字符串的長度減一(len(str)-1)该面。
注意:空字符的情況。返回值通常也為True?
程序示例:?
str = "hello,i love python"
print("1:",str.startswith("h"))
print("2:",str.startswith("l",2,10))# 索引 llo,i lo 是否以“n”結(jié)尾信卡。
print("3:",str.startswith("")) #空字符
print("4:",str[0:6].startswith("h")) # 只索引? hello,
print("5:",str[0:6].startswith("e"))
print("6:",str[0:6].startswith(""))
print("7:",str.startswith(("h","z")))#遍歷元組的元素隔缀,存在即返回True,否者返回False
print("8:",str.startswith(("k","m")))?
程序運行結(jié)果:?
1: True
2: True
3: True
4: True
5: False
6: True
7: True
8: False?
23.0 isalnum()函數(shù)?
描述:檢測字符串是否由字母和數(shù)字組成傍菇。?
語法:str.isalnum()? -> bool? 返回值為布爾類型(True,False)?
str中至少有一個字符且所有字符都是字母或數(shù)字則返回 True,否則返回 False
程序示例:?
str1 = "i love python 666"? #有空格猾瘸,不全是字母或數(shù)字
str2 = "python" #全為字母
str3 = "123"? #全為數(shù)字
str4 = "python666"? #字母和數(shù)字的組合
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())
print(str4.isalnum())?
程序運行結(jié)果:?
False
True
True
True?
24.0 isalpha()函數(shù)?
描述:檢測字符串是否只由字母組成。?
語法:str.isalpha()? -> bool? 返回值為布爾類型(True,False)?
字符串中至少有一個字符且所有字符都是字母則返回 True,否則返回 False丢习。
程序示例:?
str1 = "python" #全為字母
str2 = " python" #存在空格
str3 = "123"? #全為數(shù)字
str4 = "python666"? ?#字母和數(shù)字的組合
print(str1.isalpha())
print(str2.isalpha())
print(str3.isalpha())
print(str4.isalpha()?
程序運行結(jié)果:?
True
False
False
False?
25.0 isdecimal()函數(shù)?
描述:檢查字符串是否只包含十進(jìn)制字符牵触。該方法只存在于unicode對象中。?
注意:定義一個十進(jìn)制字符串咐低,只需要在字符串前添加前綴 'u' 即可荒吏。?
語法: str.isdecimal()? -> bool? 返回值為布爾類型(True,False)?
字符串中若只包含十進(jìn)制字符返回True,否則返回False渊鞋。
程序示例:?
str1 = u"123456"?
str2 = u"python666"
str3 = "123456"
str4 = "python666"
print(str1.isdecimal())
print(str2.isdecimal())
print(str3.isdecimal())
print(str4.isdecimal())?
程序運行結(jié)果:?
True
False
True
False?
26.0 isdigit()函數(shù)?
描述:檢測字符串是否只由數(shù)字組成.?
語法: str.isdigit()? -> bool? 返回值為布爾類型(True,False)?
字符串中至少有一個字符且所有字符都是數(shù)字則返回 True,否則返回 False绰更。注:能判斷“①”,不能判斷中文數(shù)字锡宋。但 isnumeric() 函數(shù)可以儡湾。
程序示例:?
str1 = "python" #全為字母
str2 = " python" #存在空格
str3 = "123"? #全為數(shù)字
str4 = "python666"? ?#字母和數(shù)字的組合
str5 = "一二三四五六七" #中文數(shù)字輸出False
str6 = "①"??
print(str1.isdigit())
print(str2.isdigit())
print(str3.isdigit())
print(str4.isdigit())
print(str5.isdigit())
print(str6.isdigit())?
程序運行結(jié)果:?
False
False
True
False
False
True?
27.0 isidentifier()函數(shù)?
描述:判斷str是否是有效的標(biāo)識符。str為符合命名規(guī)則的變量执俩,保留標(biāo)識符則返回True,否者返回False徐钠。?
語法:str.isidentifier()? -> bool? 返回值為布爾類型(True,False)?
程序示例:?
str1 = "123"? #變量名為123
str2 = "def"? #變量名為保留字
str3 = "_123"? #變量名有下劃線開頭
str4 = "student"#變量名由字母開端
print(str1.isidentifier())
print(str2.isidentifier())
print(str3.isidentifier())
print(str4.isidentifier())?
程序運行結(jié)果:?
False
True
True
True?
28.0? islower()函數(shù)?
描述:檢測字符串中的字母是否全由小寫字母組成。(字符串中可包含非字母字符)?
語法:str.islower()? -> bool? ?返回值為布爾類型(True,False)?
字符串中包含至少一個區(qū)分大小寫的字符役首,且所有這些區(qū)分大小寫的字符都是小寫尝丐,則返回 True,否則返回 False衡奥。
程序示例:?
str1 = "i love python"? #字符串中的字母全為小寫
str2 = "我愛python爹袁!"? #字符串中的字母全為小寫,也存在非字母的字符
str3 = "I love python" #字符串中有大寫字符
print(str1.islower())
print(str2.islower())
print(str3.islower())?
程序運行結(jié)果:?
True
True
False?
29.0 isupper()函數(shù)?
描述:檢測字符串中的字母是否全由大寫字母組成矮固。(字符串中可包含非字母字符)失息。?
語法:str.isupper()? -> bool? 返回值為布爾類型(True,False)?
字符串中包含至少一個區(qū)分大小寫的字符,且所有這些區(qū)分大小寫的字符都是大寫,則返回 True盹兢,否則返回 False邻梆。
程序示例:?
str1 = "I LOVE PYTHON"? #全為大寫字母
str2 = "i LOVE PYTHON"? #存在小寫字母
str3 = "我愛PYTHON"? ?#存在非字母的字符
print(str1.isupper())
print(str2.isupper())
print(str3.isupper())?
程序運行結(jié)果:?
True
False
True?
30.0 isnumeric()函數(shù)?
描述:測字符串是否只由數(shù)字組成。這種方法是只適用于unicode對象绎秒。?
注:把一個字符串定義為Unicode浦妄,只需要在字符串前添加 前綴 'u'??
語法:str.isnumeric()? -> bool? 返回值為布爾類型(True,False)?
字符串中只包含數(shù)字字符,則返回 True见芹,否則返回 False校辩。與isdigit()函數(shù)類似,但isnumeric()函數(shù)可以判斷中文數(shù)字辆童,功能更強大。
程序示例:?
str1 = u"123456"? #全為數(shù)字
str2 = "123456"
str3 = "python666"? #字母數(shù)字組合
str4 = "一二三四五六"? #中文數(shù)字
str5 = "①"
print(str1.isnumeric())
print(str2.isnumeric())
print(str3.isnumeric())
print(str4.isnumeric())
print(str5.isnumeric())?
程序運行結(jié)果:?
True
True
False
True
True?
31.0 isprintable()函數(shù)?
描述:判斷字符串中是否有打印后不可見的內(nèi)容惠赫。如:\n \t? 等字符把鉴。?
語法:? str.isprintable()? -> bool 返回值為布爾類型(True,False)?
若字符串中不存在\n \t 等不可見的內(nèi)容,則返回True,否者返回False儿咱。
程序示例:?
str1 = "i love? python"? #不存在用print()打印后不可見的內(nèi)容
str2 = "i love python \n" #存在用print()打印后不可見的內(nèi)容 \n
str3 = "i love \t python"
print(str1.isprintable())
print(str2.isprintable())
print(str3.isprintable())?
程序運行結(jié)果:?
True
False
False?
32.0 isspace()函數(shù)?
描述: 檢測字符串是否只由空格組成庭砍。?
語法:str.isspace()? -> bool? ?返回值為布爾類型(True,False)?
若字符串中只包含空格,則返回 True混埠,否則返回 False怠缸。
程序示例:?
str1 = "? ?"#空格
str2 = "i love python"?
print(str1.isspace())
print(str2.isspace())
print(str2[1].isspace()) #字符串str2 的第二個字符為空格?
程序運行結(jié)果:?
True
False
True?
33.0 istitle()函數(shù)?
描述:檢測判斷字符串中所有單詞的首字母是否為大寫,且其它字母是否為小寫钳宪,字符串中可以存在其它非字母的字符揭北。?
語法:str.istitle()? -> bool? 返回值為布爾類型(True,False)?
若字符串中所有單詞的首字母為大寫,且其它字母為小寫吏颖,則返回 True搔体,否則返回 False.
程序示例:?
str1 = "I Love Python" #各單詞的首字母均為大寫,其余字母為小寫
str2 = "I love python"?
str3 = "I LOVE PYTHON"
str4 = "我愛Python"? #存在其它非字母字符半醉,
print(str1.istitle())
print(str2.istitle())
print(str3.istitle())
print(str4.istitle())?
程序運行結(jié)果:?
True
False
False
True?
解決字符串兩端:?
34.0? strip()函數(shù)?
描述:從字符串str中去掉在其左右兩邊chars中列出的字符疚俱。?
注:chars傳入的是一個字符數(shù)組,編譯器去除兩端所有相應(yīng)的字符缩多,直到出現(xiàn)第一個在chars中不匹配的字符呆奕。詳看示例。?
語法: str.strip(chars)? -> str 返回一個新的字符串?
chars —— 要去除的字符? 默認(rèn)為空格或換行符衬吆。
程序示例:?
str = "123456789321"
print(str.strip("123")) #除去123梁钾,對于字符串str右邊,1 在 "123"中去除逊抡,2在"123"中去除陈轿,同理3也去除,但9不在"123"中,去除結(jié)束
str1 = "my name is ymyyyy"
print(str1.strip("my"))? #"my" 無空格,字母n前的空格不去掉麦射。
print(str1.strip("my ")) #"my "有空格蛾娶,所以str1左邊字母n前的空格被去掉。?
程序運行結(jié)果:?
456789
?name is?
name is?
35.0 lstrip()函數(shù)?
描述:從字符串str中去掉在其左邊chars中列出的字符潜秋。?
注:chars傳入的是一個字符數(shù)組蛔琅,編譯器去除兩端所有相應(yīng)的字符,直到出現(xiàn)第一個在chars中不匹配的字符峻呛。詳看示例罗售。?
語法:str.lstrip(chars)? -> str 返回一個新的字符串?
chars —— 要去除的字符? 默認(rèn)為空格或換行符。
程序示例:?
str1 = "bacjabck123kluabc"
print(str1.lstrip("abc"))? #只去掉左邊的"bac",左邊第4個字符j不在"abc"中钩述,去除結(jié)束
str2 = "12578asdfgh12"
print(str2.lstrip("12")) #只去掉字符串str2左邊的 12?
程序運行結(jié)果:?
jabck123kluabc
578asdfgh12?
36. rstrip()函數(shù)?
描述:從字符串str中去掉在其右邊chars中列出的字符寨躁。?
注:chars傳入的是一個字符數(shù)組,編譯器去除兩端所有相應(yīng)的字符牙勘,直到出現(xiàn)第一個在chars中不匹配的字符职恳。詳看示例。?
語法:str.rstrip(chars)? -> str 返回一個新的字符串?
chars —— 要去除的字符? 默認(rèn)為空格或換行符方面。
程序示例:?
str1 = "abcjabck123kluabcca"
print(str1.rstrip("abc"))? #只去掉右邊的"abcca",右邊第6個字符u不在"abc"中放钦,去除結(jié)束
str2 = "12578asdfgh11112"
print(str2.rstrip("12")) #只去掉字符串str2右邊的 11112?
程序運行結(jié)果:?
abcjabck123klu
12578asdfgh?
解決 制表 翻譯 問題:?
37.0 maketrans()函數(shù)?
描述:制作翻譯表,刪除表恭金,常與translate()函數(shù)連用操禀。 即:返回用于str.translate()函數(shù)翻譯的的轉(zhuǎn)換表。?
語法:maketrans(x, y=None, z=None, /)? 返回可用于str.translate()函數(shù)的轉(zhuǎn)換表?
str.maketrans(x,y,z)? #返回的是Unicode映射的字典横腿。
bytes.maketrans(x,y)? #返回的是bytes類型.
bytearray.maketrans(x,y)? #返回的是bytes類型颓屑。?
如果只有一個參數(shù)x,它必須是一個字典且為Unicode形式的映射。如果有兩個參數(shù)x和y耿焊,它們必須是長度相等的字符串邢锯,并且在結(jié)果映射中,x中的每個字符都將映射到y(tǒng)中相同位置的字符(Unicode形式的映射)搀别。如果有三個參數(shù)x,y和z.? x和y用法同上丹擎,z為指定要刪除的字符串,其結(jié)果中的字符將一一映射為:None歇父。bytes.maketrans(x,y) 和? bytearray.maketrans(x,y) 必須要有x和y兩個參數(shù)蒂培。注:z的長度可以和x和y不同。
?str.maketrans(x,y,z)形式:?
程序示例:?
s = "123456789"
#只有參數(shù)x榜苫,且x為字典护戳。
map1 = str.maketrans({"1":"a","2":"b","3":"c"})?
#單字符"1" "2" "3"對應(yīng)的Unicode編碼值分別為:49,50,51
#制作翻譯表,將 字符串s 中的單字符"1"替換為單字符"a"垂睬,單字符"2"替換為單字符"b",一一對應(yīng)媳荒。
print(map1,type(map1),ord("1"),ord("2"),ord("3")) #map1返回的是一個Unicode形式映射的字典
#只有參數(shù)x和參數(shù)y
map2 = str.maketrans("123","abc")
#單字符"1" "2" "3"對應(yīng)的Unicode編碼值如上抗悍,單字符"a" "b" "c"對應(yīng)的Unicode編碼值分別為:97,98,99
#制作翻譯表,將字符串s中的單字符"1"替換為單字符"a"钳枕,單字符"2"替換為單字符"b",一一對應(yīng)
print(map2,type(map2),ord("a"),ord("b"),ord("c"))#map2返回的也是一個Unicode形式映射的字典
#有x,y,z三個參數(shù)
map3 = str.maketrans("123","abc","56k")?
#字符串"123"和"abc"含義如上缴渊。字符串"567"為 字符串s 要刪除的字符,即制作刪除表。
#單字符"5" "6" "k"對應(yīng)的Unicode編碼值分別為:53,54,107
print(map3,type(map3),ord("5"),ord("6"),ord("k")) #map3返回的也是一個Unicode形式映射的字典
程序運行結(jié)果:?
49: 'a', 50: 'b', 51: 'c'} <class 'dict'> 49 50 51
{49: 97, 50: 98, 51: 99} <class 'dict'> 97 98 99
{49: 97, 50: 98, 51: 99, 53: None, 54: None, 107: None} <class 'dict'> 53 54 107
In [6]:
?bytes.maketrans(x,y)形式:?
程序示例:?
map4 = bytes.maketrans(b"123",b"abc")
print(type(b"123"),type(b"abc"),type(map4),map4)?
程序運行結(jié)果:?
<class 'bytes'> <class 'bytes'> <class 'bytes'>?
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0abc456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'?
?bytearray.maketrans(x,y)形式:?
程序示例:?
map5 = bytearray.maketrans(b"123",b"abc")
print(type(b"123"),type(b"abc"),type(map5),map5)?
程序運行結(jié)果:?
<class 'bytes'> <class 'bytes'> <class 'bytes'>?
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0abc456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'?
38.0 translate()函數(shù)?
描述:過濾(刪除)鱼炒,翻譯字符串衔沼。即根據(jù)maketrans()函數(shù)給出的字符映射轉(zhuǎn)換表來轉(zhuǎn)換字符串中的字符。?
注:translate()函數(shù)是先過濾(刪除)昔瞧,再根據(jù)maketrans()函數(shù)返回的轉(zhuǎn)換表來翻譯指蚁。?
語法:str.translate(table)? -> str 返回一個字符串?
str.translate(table)
bytes.translate(table, deletechars)? ??
bytearray.translate(table, deletechars)??
table —— 轉(zhuǎn)換表,轉(zhuǎn)換表是通過maketrans()函數(shù)轉(zhuǎn)換而來自晰。deletechars —— 字符串中要過濾(刪除)的字符凝化。
程序示例:?
s = "123456789abc"
s1 = b"123456789abc"
#只有參數(shù)x,且x為字典酬荞。
map1 = str.maketrans({"1":"a","2":"b","3":"c"})?
#單字符"1" "2" "3"對應(yīng)的Unicode編碼值分別為:49搓劫,50,51
#制作翻譯表,將 字符串s 中的單字符"1"替換為單字符"a",單字符"2"替換為單字符"b",一一對應(yīng)袜蚕。
print(map1,type(map1),ord("1"),ord("2"),ord("3")) #map1返回的是一個Unicode形式映射的字典
#只有參數(shù)x和參數(shù)y
map2 = str.maketrans("123","abc")
#單字符"1" "2" "3"對應(yīng)的Unicode編碼值如上,單字符"a" "b" "c"對應(yīng)的Unicode編碼值分別為:97绢涡,98,99
#制作翻譯表,將字符串s中的單字符"1"替換為單字符"a"牲剃,單字符"2"替換為單字符"b",一一對應(yīng)
print(map2,type(map2),ord("a"),ord("b"),ord("c"))#map2返回的也是一個Unicode形式映射的字典
#有x,y,z三個參數(shù)
map3 = str.maketrans("123","abc","56k")?
#字符串"123"和"abc"含義如上。字符串"567"為 字符串s 要刪除的字符,即制作刪除表雄可。
#單字符"5" "6" "k"對應(yīng)的Unicode編碼值分別為:53,54,107
print(map3,type(map3),ord("5"),ord("6"),ord("k")) #map3返回的也是一個Unicode形式映射的字典
map4 = bytes.maketrans(b"123",b"abc")
print(type(b"123"),type(b"abc"),type(map4),map4)
print("\n")
map5 = bytearray.maketrans(b"123",b"abc")
print(type(b"123"),type(b"abc"),type(map5),map5)
print("\n\n")
print(s.translate(map1)) #將 字符串s 中的"123" 分別替換為 "abc"
print(s.translate(map2)) #將 字符串s 中的"123" 分別替換為 "abc"
print(s.translate(map3)) #先將 字符串s 中的字符 "5","6" ,"k"過濾(刪除)凿傅,再將 字符串s 中的"123" 分別翻譯替換為 "abc"
print(s1.translate(map4))
print(s1.translate(map5))
print(s1.translate(map4,b"78b")) #先將s1中的b"78b" 過濾(刪除),再將 s1 中的b"123" 分別翻譯替換為 b"abc"
print(s1.translate(map5,b"9"))? #先將s1中的b"9" 過濾(刪除)数苫,再將 s1 中的b"123" 分別翻譯替換為 b"abc"?
程序運行結(jié)果:?
{49: 'a', 50: 'b', 51: 'c'} <class 'dict'> 49 50 51
{49: 97, 50: 98, 51: 99} <class 'dict'> 97 98 99
{49: 97, 50: 98, 51: 99, 53: None, 54: None, 107: None} <class 'dict'> 53 54 107
<class 'bytes'> <class 'bytes'> <class 'bytes'> b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0abc456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
<class 'bytes'> <class 'bytes'> <class 'bytes'> b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0abc456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
abc456789abc
abc456789abc
abc4789abc
b'abc456789abc'
b'abc456789abc'
b'abc4569ac'
b'abc45678abc'?
解決分割字符串問題:?
39.0 partition()函數(shù):?
描述:根據(jù)指定的分隔符(sep)將字符串進(jìn)行分割聪舒。從字符串左邊開始索引分隔符sep,索引到則停止索引。?
語法: str.partition(sep) -> (head, sep, tail)? 返回一個三元元組虐急,head:分隔符sep前的字符串箱残,sep:分隔符本身,tail:分隔符sep后的字符串止吁。?
sep —— 指定的分隔符被辑。 如果字符串包含指定的分隔符sep,則返回一個三元元組敬惦,第一個為分隔符sep左邊的子字符串习劫,第二個為分隔符sep本身笤成,第三個為分隔符sep右邊的子字符串。 如果字符串不包含指定的分隔符sep,仍然返回一個三元元組,第一個元素為字符串本身,第二第三個元素為空字符串
程序示例:?
str = "https://www.baidu.com/"
print(str.partition("://")) #字符串str中存在sep"://"
print(str.partition(","))? #字符串str中不存在sep",",返回了兩個空字符串费彼。
print(str.partition("."))? #字符串str中存在兩個"." 但索引到www后的"."? 停止索引。
print(type(str.partition("://"))) #返回的是tuple類型, 即元組類型?
程序運行結(jié)果:?
('https', '://', 'www.baidu.com/')
('https://www.baidu.com/', '', '')
('https://www', '.', 'baidu.com/')
<class 'tuple'>?
40.0? rpartition()函數(shù)?
描述:根據(jù)指定的分隔符(sep)將字符串進(jìn)行分割鸽粉。從字符串右邊(末尾)開始索引分隔符sep,索引到則停止索引。?
語法:str.rpartition(sep)? -> (head, sep, tail) 返回一個三元元組妨猩,head:分隔符sep前的字符串潜叛,sep:分隔符本身,tail:分隔符sep后的字符串壶硅。?
sep —— 指定的分隔符威兜。 如果字符串包含指定的分隔符sep,則返回一個三元元組庐椒,第一個為分隔符sep左邊的子字符串椒舵,第二個為分隔符sep本身,第三個為分隔符sep右邊的子字符串约谈。 如果字符串不包含指定的分隔符sep,仍然返回一個三元元組笔宿,第一個元素為字符串本身,第二第三個元素為空字符串棱诱。
注:rpartition()函數(shù)與partition()函數(shù)用法相似泼橘,rpartition()函數(shù)從右邊(末尾)開始索引,partition()函數(shù)從左邊開始索引迈勋。?
程序示例:?
str = "https://www.baidu.com/"
print(str.rpartition("://")) #字符串str中存在sep"://"
print(str.rpartition(","))? #字符串str中不存在sep",",返回了兩個空字符串炬灭。
print(str.rpartition("."))? #字符串str中存在兩個"." 但索引是從右邊(末尾)開始,索引到du后的"."? 停止索引靡菇。
print(type(str.partition("://"))) #返回的也是tuple類型重归, 即元組類型?
程序運行結(jié)果:?
('https', '://', 'www.baidu.com/')
('', '', 'https://www.baidu.com/')
('https://www.baidu', '.', 'com/')
<class 'tuple'>?
41.0? split()函數(shù)?
描述:拆分字符串。通過指定分隔符sep對字符串進(jìn)行分割厦凤,并返回分割后的字符串列表鼻吮。?
語法: str.split(sep=None, maxsplit=-1)? -> list of strings? 返回 字符串列表? 或str.split(sep=None, maxsplit=-1)[n]? ?
sep —— 分隔符,默認(rèn)為空格,但不能為空即(")较鼓。maxsplit —— 最大分割參數(shù)椎木,默認(rèn)參數(shù)為-1。[n] —— 返回列表中下標(biāo)為n的元素博烂。列表索引的用法拓哺。
程序示例:?
str1 = "i love python"
str2 = "https://www.baidu.com"
str3 = "script<i love python>script"
str4 = "i \n love \n python"
print(str1.split()) #默認(rèn)空格分割。
print(str2.split("."))#以"."為分隔符,maxsplit默認(rèn)為-1
print(str2.split(".",-1)) #maxsplit為-1
print(str2.split(".",1)) #以"."為分隔符,分割一次脖母。
print(str2.split(".")[1]) #分割后士鸥,輸出列表中下標(biāo)為1的元素
print(str3.split("<")[1].split(">")[0])
print(str4.split("\n")) #可用于去掉字符串中的"\n" "\t"等?
程序運行結(jié)果:?
['i', 'love', 'python']
['https://www', 'baidu', 'com']
['https://www', 'baidu', 'com']
['https://www', 'baidu.com']
baidu
i love python
['i ', ' love ', ' python']?
42.0? rsplit()函數(shù)?
描述:拆分字符串。通過指定分隔符sep對字符串進(jìn)行分割谆级,并返回分割后的字符串列表,類似于split()函數(shù)烤礁,只不過 rsplit()函數(shù)是從字符串右邊(末尾)開始分割讼积。?
語法: str.rsplit(sep=None, maxsplit=-1)? -> list of strings? 返回 字符串列表? 或str.rsplit(sep=None, maxsplit=-1)[n]? ?
sep —— 分隔符,默認(rèn)為空格,但不能為空即(")脚仔。maxsplit —— 最大分割參數(shù)勤众,默認(rèn)參數(shù)為-1。[n] —— 返回列表中下標(biāo)為n的元素鲤脏。列表索引的用法们颜。
程序示例:?
str = "https://www.baidu.com"
print(str.rsplit()) #默認(rèn)空格分割。
print(str.rsplit(".")) #以"."為分隔符,maxsplit默認(rèn)為-1
print(str.rsplit(".",1)) #以"."為分隔符,分割一次猎醇。從字符串右邊(末尾)開始分割窥突。
print(str.rsplit(".",1)[1]) #分割后,輸出列表中下標(biāo)為1的元素?
程序運行結(jié)果:?
['https://www.baidu.com']
['https://www', 'baidu', 'com']
['https://www.baidu', 'com']
com?
43.0 splitlines()函數(shù)?
描述:按照('\n', '\r', \r\n'等)分隔硫嘶,返回一個包含各行作為元素的列表阻问,默認(rèn)不包含換行符。?
符號描述\n換行符\r回車符\r\n回車+換行
語法:str.splitlines(keepends) -> list of strings? 返回 字符串列表?
keepends —— 默認(rèn)參數(shù)為False 沦疾,譯為 不保留換行符称近。參數(shù)為True , 譯為 保留換行符。
程序示例:?
s1 = """i
love
python
"""
s2 = "i\nlove\npython\n" #與s1等效哮塞。
s3 = "123\n456\r789\r\nabc"
print(s1.splitlines(True))?
print(s1.splitlines()) #keepends 默認(rèn)為False
print(s1.splitlines(False))
print(s2.splitlines())
print(s3.splitlines()) #遇到("\n"? "\r"? "\r\n"等)即分隔刨秆。?
程序運行結(jié)果:?
['i\n', 'love\n', 'python\n']
['i', 'love', 'python']
['i', 'love', 'python']
['i', 'love', 'python']
['123', '456', '789', 'abc']?
44.0 join()函數(shù)?
描述:將iterable變量的每一個元素后增加一個str字符串。?
語法: str.join(iterable)? -> str? 返回字符串 即:返回一個以str作為分隔符忆畅,將iterable中的各元素合并連接成一個新的字符串衡未。?
str——分隔符×诰欤可以為空眠屎。iterable—— 要連接的變量 剔交,可以是 字符串肆饶,元組,字典岖常,列表等驯镊。
程序示例:?
#對列表進(jìn)行操作
l = ["1","2","3"]
print(" ".join(l)) #以空格為分隔符
print(",".join(l)) #以逗號為分隔符
#對字符串進(jìn)行操作
str = "python"
print(" ".join(str)) #以空格為分隔符
print(",".join(str)) #以逗號為分隔符
#對字典進(jìn)行操作
d = {"a":1,"b":2,"c":3}
print(" ".join(d)) #以空格為分隔符
print(",".join(d)) #以逗號為分隔符
#對元組進(jìn)行操作
s = ("1","2","3")
print(" ".join(s)) #以空格為分隔符
print(",".join(s)) #以逗號為分隔符?
程序運行結(jié)果:?
1 2 3
1,2,3
p y t h o n
p,y,t,h,o,n
b c a
b,c,a
1 2 3
1,2,3?
解決替換問題:?
45.0 replace()函數(shù):?
描述:返回字符串str的副本,所有old子字符串被替換為new字符串竭鞍。?
語法:str.replace(old, new, count) -> str 返回字符串str的副本?
old —— 將被替換的子字符串板惑。new —— 新子字符串,用于替換old子字符串偎快。count —— 替換的次數(shù)冯乘,默認(rèn)全部替換。
程序示例:?
s = "i love python python "
print(s.replace("o","w")) #默認(rèn)字符串中的全部"o" 全部替換為"w"
print(s.replace("o","w",2)) #只替換掉前兩個子字符串 "o"
print(s.replace("python","c++"))? #子字符串可以是多個字符晒夹。
print(s.replace("python","c++",1))?
程序運行結(jié)果:?
i lwve pythwn pythwn?
i lwve pythwn python?
i love c++ c++?
i love c++ python