「Python」字符串操作內置函數


目錄:

  1. capitalize
  2. casefold
  3. center
  4. count
  5. encode
  6. decode
  7. endswith
  8. expandtabs
  9. find
  10. format
  11. format_map
  12. index
  13. isalnum
  14. isalpha
  15. isdecimal
  16. isdigit
  17. isidentifier
  18. islower
  19. isnumeric
  20. isprintable
  21. isspace
  22. istitle
  23. isupper
  24. join
  25. ljust
  26. lower
  27. lstrip
  28. maketrans
  29. partition
  30. replace
  31. rfind
  32. rindex
  33. rjust
  34. rpartition
  35. rsplit
  36. rstrip
  37. split
  38. splitlines
  39. startswith
  40. strip
  41. swapcase
  42. title
  43. translate
  44. upper
  45. zfill

1.0 capitalize()函數

描述:將字符串的第一個字母變成大寫,其余字母變為小寫。

語法: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())

程序運行結果:

I love python
i love python
I love python

2.0 lower()函數

描述:將字符串中的所有大寫字母轉換為小寫字母。

語法:str.lower() -> str 返回字符串

str1 = "I Love Python"
str2 = "Groß - α" #德語 大寫α
print(str1.casefold())
print(str1.lower())
print(str2.casefold())
print(str2.lower())

程序運行結果:

i love python
i love python
gross - α
groß - α

注意

lower()函數和casefold()函數的區別:

lower() 方法只對ASCII編碼,即‘A-Z’有效,對於其它語言中把大寫轉換為小寫的情況無效,只能用 casefold() 函數。

 

3.0 casefold()函數

描述:將字符串中的所有大寫字母轉換為小寫字母。

語法:str.casefold() -> str 返回字符串

str1 = "I Love Python"
str2 = "Groß - α" #德語 大寫α
print(str1.casefold())
print(str1.lower())
print(str2.casefold())
print(str2.lower())

程序運行結果:

i love python
i love python
gross - α
groß - α

4.0 center()函數

描述:返回一個長度為width,兩邊用fillchar(單字符)填充的字符串,即字符串str居中,兩邊用fillchar填充。若字符串的長度大於width,則直接返回字符串str

語法:str.center(width , "fillchar") -> str 返回字符串 注意:引號不可省

str = "i love python"
print(str.center(20,"*"))
print(str.center(1,"*"))
print(str.center(20,"8"))

程序運行結果:

***i love python****
i love python
888i love python8888

5.0 count()函數

描述:統計字符串里某個字符出現的次數。可以選擇字符串索引的起始位置和結束位置。 

語法:str.count("char", start,end) 或 str.count("char") -> int 返回整數

str為要統計的字符(可以是單字符,也可以是多字符),star為索引字符串的起始位置,默認參數為0,end為索引字符串的結束位置,默認參數為字符串長度即len(str)

str = "i love python,i am learning python"
print(str.count("i")) #star 和end 為默認參數
print(str.count("i",2)) # star值為2,end值為默認參數
print(str.count("i",2,5)) #star值為2,end值為5
print(str.count("am")) #多字符統計

程序運行結果:

3
2
0
1

6.0 encode()函數

描述:以指定的編碼格式編碼字符串,默認編碼為 'utf-8'。

語法:str.encode(encoding='utf-8', errors='strict') -> bytes (獲得bytes類型對象)

  • encoding 參數可選,即要使用的編碼,默認編碼為 'utf-8'。字符串編碼常用類型有:utf-8,gb2312,cp936,gbk等。
  • errors 參數可選,設置不同錯誤的處理方案。默認為 '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進行編碼,獲得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"))

程序運行結果:

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分別指編碼和解碼

7.0 decode()函數

描述:以 encoding 指定的編碼格式解碼字符串,默認編碼為字符串編碼。

  • encoding ——要使用的編碼,如:utf-8,gb2312,cp936,gbk等。
  • errors ——設置不同解碼錯誤的處理方案。默認為 'strict',意為編碼錯誤引起一個 UnicodeDecodeError。 其它可能得值有 'ignore', 'replace'以及通過 codecs.register_error() 注冊的1其它值。

語法:str.decode(encoding='utf-8', errors='strict')

s = "我愛祖國"
str1 = s.encode(encoding="utf-8",errors="strict")
str2 = s.encode("gb2312") #編碼錯誤的處理方案默認為"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進行解碼得,將無法還原原來的字符串內容
print(str1.decode(encoding="gbk",errors="strict"))
print(str1.decode(encoding="gbk",errors="replace"))
print(" ")
print(str2.decode("gb2312"))
print(str3.decode("gbk"))

程序運行結果:

我愛祖國
鎴戠埍紲栧浗
鎴戠埍紲栧浗
鎴戠埍紲栧浗
我愛祖國
我愛祖國

8.0 endswith()函數

描述:判斷字符串是否以指定字符或子字符串結尾。

語法:str.endswith("suffix", start, end) 或

str[start,end].endswith("suffix") 用於判斷字符串中某段字符串是否以指定字符或子字符串結尾。

—> bool 返回值為布爾類型(True,False)

  • suffix — 后綴,可以是單個字符,也可以是字符串,還可以是元組("suffix"中的引號要省略,常用於判斷文件類型)。
  • start —索引字符串的起始位置。
  • end — 索引字符串的結束位置。
  • str.endswith(suffix) star默認為0,end默認為字符串的長度減一(len(str)-1)

注意:空字符的情況。返回值通常為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”結尾。
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("文件格式未知")

程序運行結果:

1: True
2: True
3: False
4: True
5: False
6: True
7: True
8: True
9: False
該文件是文本文件

9.0 startswith()函數

描述:判斷字符串是否以指定字符或子字符串開頭。

語法:str.endswith("suffix", start, end) 或

str[start,end].endswith("suffix") 用於判斷字符串中某段字符串是否以指定字符或子字符串結尾。

—> bool 返回值為布爾類型(True,False)

  • suffix — 后綴,可以是單個字符,也可以是字符串,還可以是元組("suffix"中的引號要省略)。
  • start —索引字符串的起始位置。
  • end — 索引字符串的結束位置。
  • str.endswith(suffix) star默認為0,end默認為字符串的長度減一(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”結尾。
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")))

程序運行結果:

1: True
2: True
3: True
4: True
5: False
6: True
7: True
8: False

10.0 expandtabs()函數

描述:返回一個字符串的副本。使原字符串中的制表符(" ")的使用空間變大。使用空格來擴展空間。

語法: str.expandtabs(tabsize=8) —> str 返回字符串

  • tabsize 的默認值為8。tabsize值為0到7等效於tabsize=8。tabsize每增加1,原字符串中“ ”的空間會多加一個空格。
str = "i love	python"
print(str.expandtabs())#默認值為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))

程序運行結果:

i love python
i love python
i love python
i love python
i love python
i love python
i love python

11.0 find()函數

描述:查找字符串中第一次出現的子字符串的位置,可以規定字符串的索引查找范圍。若無則返回 -1

語法:str.find(sub,start,end) -> int 返回整數。

  • sum —要索引的子字符串
  • start —索引的起始位置。默認值為0
  • end —索引的結束位置。默認值為字符串長度減一(len(str)-1)

[start,end) 不包括end

str = "i love python"
print(str.find("o")) #索引子字符串"o"
print(str.find("0",4))#索引起始位置為4
print(str.find("o",4,12))#索引起始位置為4,結束位置為12 即:ve pytho
print(str.find("k")) #索引子字符串"k",不存在,返回-1

程序運行結果:

3
-1
11
-1
 

12.0 format_map()函數:

描述:返回字符串的格式化版本。

語法:str.format_map(mapping) -> str 返回字符串


student = {"name":["張三","李四"],"idcard":[1,2]}

print("我的名字是{name[0]},我的學號是{idcard[0]}".format_map(student))
print("我的名字是{name[0]},我的學號是{idcard[1]}".format_map(student))


print(["我的名字是{},我的學號是{}".format(*x) for x in zip(student["name"],student["idcard"])]) #以列表的形式輸出
print("我的名字是{},我的學號是{}".format(*x) for x in zip(student["name"],student["idcard"]))

print(["我的名字是{},我的學號是{}".format(*x) for x in zip(*map(student.get,["name","idcard"]))]) #以列表的形式輸出
print("我的名字是{},我的學號是{}".format(*x) for x in zip(*map(student.get,["name","idcard"])))

for i in range(len(student)):
print("我的名字是{{name[0]}},我的學號是{{idcard[0]}}".format(i).format_map(student))
# {{ }} 等效於{ }

程序運行結果:


我的名字是張三,我的學號是1
我的名字是張三,我的學號是2

['我的名字是張三,我的學號是1', '我的名字是李四,我的學號是2']
<generator object <genexpr> at 0x0000018F5E1CFF68>

['我的名字是張三,我的學號是1', '我的名字是李四,我的學號是2']
<generator object <genexpr> at 0x0000018F5E1CF200>

我的名字是張三,我的學號是1
我的名字是張三,我的學號是1
 

13.0 index()函數 

描述:查找字符串中第一次出現的子字符串的位置,可以規定字符串的索引查找范圍。若無則會報錯

語法:str.index(sub, start, end) -> int 返回整數。


str = "i love python"
print(str.index("o")) #默認索引整個字符串
print(str.index("o",4)) #索引 ve python
print(str.index("o",4,12)) #索引 ve pytho
print(str.index("love")) #索引多個字符
print(str.index("k")) #索引字符串不存在,報錯

程序運行結果:


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()函數和find()函數類似,但index()函數沒有找到子字符串會報錯。

 

14.0 isalnum()函數

描述:檢測字符串是否由字母和數字組成。

語法:str.isalnum() -> bool 返回值為布爾類型(True,False)

  • str中至少有一個字符且所有字符都是字母或數字則返回 True,否則返回 False

str1 = "i love python 666" #有空格,不全是字母或數字
str2 = "python" #全為字母
str3 = "123" #全為數字
str4 = "python666" #字母和數字的組合
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())
print(str4.isalnum())

程序運行結果:


False
True
True
True
 

15.0 isalpha()函數

描述:檢測字符串是否只由字母組成.

語法:str.isalpha() -> bool 返回值為布爾類型(True,False)

  • 字符串中至少有一個字符且所有字符都是字母則返回 True,否則返回 False

str1 = "python" #全為字母
str2 = " python" #存在空格
str3 = "123" #全為數字
str4 = "python666" #字母和數字的組合
print(str1.isalpha())
print(str2.isalpha())
print(str3.isalpha())
print(str4.isalpha()

程序運行結果:


True
False
False
False
 

16.0 isdecimal()函數

描述:檢查字符串是否只包含十進制字符。該方法只存在於unicode對象中。

注意:定義一個十進制字符串,只需要在字符串前添加前綴 'u' 即可。

語法: str.isdecimal() -> bool 返回值為布爾類型(True,False)

  • 字符串中若只包含十進制字符返回True,否則返回False。

str1 = u"123456"
str2 = u"python666"
str3 = "123456"
str4 = "python666"
print(str1.isdecimal())
print(str2.isdecimal())
print(str3.isdecimal())
print(str4.isdecimal())

程序運行結果:


True
False
True
False
 

17.0 isdigit()函數

描述:檢測字符串是否只由數字組成.

語法: str.isdigit() -> bool 返回值為布爾類型(True,False)

  • 字符串中至少有一個字符且所有字符都是數字則返回 True,否則返回 False
  • 注:能判斷“①”,不能判斷中文數字。但 isnumeric() 函數可以

str1 = "python" #全為字母
str2 = " python" #存在空格
str3 = "123" #全為數字
str4 = "python666" #字母和數字的組合
str5 = "一二三四五六七" #中文數字輸出False
str6 = "①"
print(str1.isdigit())
print(str2.isdigit())
print(str3.isdigit())
print(str4.isdigit())
print(str5.isdigit())
print(str6.isdigit())

程序運行結果:


False
False
True
False
False
True
 

18.0 isidentifier()函數

描述:判斷str是否是有效的標識符。str為符合命名規則的變量,保留標識符則返回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())

程序運行結果:


False
True
True
True

19.0 islower()函數

描述:檢測字符串中的字母是否全由小寫字母組成。(字符串中可包含非字母字符)

語法:str.islower() -> bool 返回值為布爾類型(True,False)

  • 字符串中包含至少一個區分大小寫的字符,且所有這些區分大小寫的字符都是小寫,則返回 True,否則返回 False

str1 = "i love python" #字符串中的字母全為小寫
str2 = "我愛python!" #字符串中的字母全為小寫,也存在非字母的字符
str3 = "I love python" #字符串中有大寫字符
print(str1.islower())
print(str2.islower())
print(str3.islower())

程序運行結果:


True
True
False

20.0 isupper()函數

描述:檢測字符串中的字母是否全由大寫字母組成。(字符串中可包含非字母字符)

語法:str.isupper() -> bool 返回值為布爾類型(True,False)

  • 字符串中包含至少一個區分大小寫的字符,且所有這些區分大小寫的字符都是大寫,則返回 True,否則返回 False

str1 = "I LOVE PYTHON" #全為大寫字母
str2 = "i LOVE PYTHON" #存在小寫字母
str3 = "我愛PYTHON" #存在非字母的字符
print(str1.isupper())
print(str2.isupper())
print(str3.isupper())

程序運行結果:


True
False
True


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM