1. 程式人生 > >#Python中字串的處理方法例項詳解

#Python中字串的處理方法例項詳解

字串的處理方法

1.eval(str) 功能:將字串str當成有效的表示式來求值並返回計算結果。

num1 = eval("123.1")
print(num1)					#(輸出)123.1	
print(type(num1))		#(輸出)<class 'float'>				#type 看數值型別	float為 浮點數
															#即eval和float一樣能轉為小數; 還有其他的功能不侷限
print(eval("+123"))		#(輸出)123		
print(eval("-123"))		#(輸出)-123		
print(eval("12+3")
) #(輸出)15 # 下面這兩種 但用int 就會報錯 print(eval("12-3")) #(輸出)9 print(int("12+3")) print(int("12-3")) #(輸出)ValueError: invalid literal for int() with base 10: '12+3' #(輸出)ValueError:無效的字面意思為int()和基數10:12+3'

2.len(str) 返回字串的長度(字元的個數)

print(len("wahat are you doing now"))
#(輸出)23

3.(str).lower() 轉化字串的大學字母為小寫字母

str1 = "Success can attract friends, frustration can be tested."
print(str1.lower())			#(輸出)success can attract friends, frustration can be tested.
print("str1 = %s"%(str1))	#(輸出)str1 = Success can attract friends, frustration can be tested.

4.upper() 轉換字串中小寫字母為大寫字母

str1 = "Success CAN attract friends, frustration can be tested."
print(str1.upper()) #(輸出)SUCCESS CAN ATTRACT FRIENDS, FRUSTRATION CAN BE TESTED.

5.swapcase() 轉換字串中大小寫字母為小大寫字母

str2 = " AAAbbb"
print(str2.swapcase())
#(輸出)	aaaBBB

6.(str).capitalize() 首字母大寫,其他字母小寫

str2 = "AAAbbb"
print(str2.capitalize())
#(輸出)	 Aaabbb

7.(str).title() 每個單詞的首字母大寫 其他小寫

str2 = "Success can attract friends, frustration can be tested."
print(str2.title())
#(輸出)	Success Can Attract Friends, Frustration Can Be Tested.

8.(str).center() center(width.fillchar) #width 寬度 fillchar 為填充的字串(不寫則預設空格填充) #char (character 縮寫) 單詞意思字元 #center字元居中 兩邊有自動填充字元

str2 = "Good job"
print(str2.center(40,"*"))			#字元有40個,不夠的自動填充字元*,其實下標還是隻有39(0-39)
print(str2.center(40))
#(輸出)	****************Good job****************
              			Good job  

9.(str).ljust() ljust(width.fillchar) left縮寫成ljust的l 返回一個指定寬度的左對齊字串,fillchar為填充字元 不寫fillchar 則預設空格 ljust() L 的小寫

str2 = "Good job"
print(str2.ljust(40) )			#(輸出)Good job    
print(str2.ljust(40,"*") )		#(輸出)Good job********************************
								#從字元後面移植填充到指寬度
print(str2.ljust(40),"*" )		#(輸出)Good job                                 *               
 								#在寬度的最後填充一個字元結尾

10.(str).rjust() rjust(width.fillchar) right縮寫成rjust的r 返回一個指定的寬度的的右對齊字串 不寫fillchar 則預設空格

str2 = "Good job"
print(str2.rjust(40) )			#(輸出)                                Good job
print(str2.rjust(40,"&") )		#(輸出)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Good job
print(str2.ljust(40),"&")		#(輸出)Good job                                 &

11.(str).zfill() zfill(width) 返回一個長度為width的字串,右對齊 前面補0

str2 = "Good job"
print(str2.zfill(40) )
#(輸出)	00000000000000000000000000000000Good job

12.(str).count() count(str[,start][,end]) 判斷字串中,從start開始的下標到字串的結尾end中出現了多少個str (給定字元) 如果 start到end 沒寫 預設 從頭到尾字串中出現str出現的次數

str3 = "ABCD abc is is is end"
print(str3.count("is",9,len(str3)))     #就是從下標8以後開始
#(輸出)	3

print(str3.count("is",10,len(str3)))  #就是從下標9以後開始
#(輸出)	2

13.(str).find() find(str[,start][,end]) start開始查詢的位置,預設為 0 檢測str字串是否包含在字串中,可以指定範圍,預設從頭到尾第一次出現的開始下標

str3 = "ABCD abc is is is end"
print(str3.find("sda"))					#(輸出)-1  #如字串中沒有給定字元 則返回-1
print(str3.find("abc"))					#(輸出)5
print(str3.find("abc",5,len(str3)))		#(輸出)5			

14.(str).find() rfind(str[,start][,end]) start開始查詢的位置,預設為 0 檢測str字串是否包含在字串中,可以指定範圍,預設從右往左檢測

str3 = "ABCD abc is is is end"
print(str3.rfind("sda"))					#(輸出)-1  #如字串中沒有給定字元 則返回-1
print(str3.rfind("abc"))					#(輸出)5
print(str3.rfind("abc",13,len(str3)))		#(輸出)-1    

15.(str).find() rfind(str[,start][,end]) start開始查詢的位置,預設為 0 和find()一樣,只不過如果str不存在會報錯 一樣的有 rindex 從右往左

str4 = "zxcvb is is a goa goaSSsdAod asd"
print(str4.index("goa"))		#(輸出)14
print(str4.rindex("goa"))		#(輸出)18

str3 = "ABCD abc is is is end"
print(str4.index("abc"))		#(輸出)5
print(str4.rindex("abc"))		#(輸出)5
#這裡就可以看出,如果字串中有兩個對應值,左右查詢結果是不一樣的,
如果只有一個值,查詢的結果是一樣的,預設為從左到右的開始下標。

16.(str).lstrip() 截掉(刪掉)左側指定的字元,預設狀態下為空格

str5 = "    AAAAAAA"
str6 = "*****AAAAAAAA"
print(str5.lstrip())			#(輸出)AAAAAAA
print(str6.lstrip("*"))			#(輸出)AAAAAAAA

17.(str).rstrip() 截掉(刪掉)截掉右側指定的字元,預設狀態下為空格

str7 = "*****A AA AAA    "
str8 = "*****A AA AAA***"
print(str7.rstrip())			#(輸出)*****A AA AAA
print(str7.rstrip("*"))			#(輸出)*****A AA AAA    

18.(str).strip() 截掉(刪掉)截掉字元傳中左右兩端的指定字元,預設狀態下為空格

str9 = "*****AAAAAAAA ****"
print(str9.strip("*"))
#(輸出)AAAAAAAA 

19.ASCII表 字元的儲存是以ASCII進行轉化 即一個參照表 a-先變成數字-轉化為二進位制 ord.(str)將字元轉化為數字 chr.(int)將數字轉換為字元

str112 = "a"  				#將字元轉化為數字
print(ord(str112))			#(輸出)97
str113=chr(45)				#將數字轉換為字元
print(str113)				#(輸出)-

20.字串的比較 從第一個字元開始比較誰的ASCII值誰就大 如果前面相同 則比較後一位直到比較出誰大 如果都相同 則相等

print("acc"<"b")			#(輸出)True
print("sunck"=="sunck")		#(輸出)True
print("acc"<"bcc")			#(輸出)True
print("zaa">"azz")			#(輸出)True

21.(str).split() split(str="",num) 以str為分隔符擷取字串,則僅擷取num 個字串

str5 = "sunck*is**a*****good man"
print(str5.split("*",4))
#(輸出)['sunck', 'is', '', 'a', '****good man'] 

22.(str).splitlines() splitlines([keepends]) 按行(’\r’,’\r\n’,’\n’ )分隔,返回 keepends == True 會保留換行符

str40 = """sunck is a good man 
sunck is a beautiful man 
sunck is a nice man 
"""
print(str40.splitlines())
#(輸出)['sunck is a good man ', 'sunck is a beautiful man ', 'sunck is a nice man ']

print(str40.splitlines(True))
#(輸出)['sunck is a good man \n', 'sunck is a beautiful man \n', 'sunck is a nice man \n']

23.(str).join() join(sep) 以指定的字串分隔符,將sep中的所有元素組合成一個字串

list41 = ['sunck','is', 'a','good','man']
str42 = "&%".join(list41)
print(str42)
#(輸出)sunck&%is&%a&%good&%man

24.字串中的max() min() 其實就是按照ASCII來轉換成數字進行比較大小。

str43 ="sunck is a good man!z"
print(max(str43))
print(min(str43))  #空格為最小 需要下面這種標記才看得到
print("*",min(str43),"*")
#(輸出)	z										
												#此處為空格
		*   *									#兩個*中間有一個空格

25.(str).replace() 替換 replace(oldstr,newstr,count) 用newstr替換oldstr,預設是全部替換,如果制定了count,那麼直替換前count個

str44 = "AAAA  is a good good good boy"
str45 = str44.replace("good","nice",1)
print(str45)
#(輸出)sunck is a nice good good man  			#即將第一個good替換為nice

26.建立一個字串對映表 (str).maketrans 這裡使用str.maketrans函式來建立一個表,它可以使用各種引數,但是需要三個Arguments(引數)。 一對一替換,一個字元對應另外一個字元。替換不可控

t46 =str.maketrans("good","abcd")
print(t46)
#(輸出) {103: 97, 111: 99, 100: 100}		#g-a o-b  o-c d-d   對面替換  不可控
										#103: 97, 111: 99, 100: 100 其實是對應的值,對映的值

(str).translate() 替換字串

t46 =str.maketrans("good","abcd")
print(t46)
str47 = "AAAAA is a good good AAA"
str48 = str47.translate(t46)
print(str48)
#(輸出)	{103: 97, 111: 99, 100: 100}
		AAAAA is a accd accd AAA

27.(str).starswith() 在一個範圍內查詢字串,如果有即返回True,否則False 查詢範圍,如果沒有範圍,預設整個字串。 starswith(str,start=0,end=len(str))

str49 = "sunck is a good good man"
print(str49.startswith("sunck",5,16))
#(輸出)False		

28.(str).endswith() 判斷字串是否以指定字尾結尾,如果以指定字尾結尾返回True,否則返回False

str50 = "sunck is a good good man"
print(str50.endswith("man"))		
#(輸出)True		

29.字串的編碼與解碼 編碼(str).encode() encode(encoding=“utf-8”,errors=“strict”) encoding 預設 utf-8 errors 預設 strict gbk為國標碼 編碼用的什麼碼 解碼的時候就要用對應的碼解

str51 = "AAAAA is a good good man"
data52 = str51.encode()
print(str51.encode())
#(輸出)b'AAAAA is a good good man'

str54 = "AAAAA is a good good man 趙"
data55 = str54.encode()
print(str54.encode())
#(輸出)b'AAAAA is a good good man \xe8\xb5\xb5'

解碼(str).decode() 注意:要與編碼是的編碼格式一致

str51 = "AAAAA is a good good man"
data52 = str51.encode()
str54 = "AAAAA is a good good man 趙"
data55 = str54.encode()

str53 = data52.decode()
print(str53)
#(輸出)AAAAA is a good good man

str56 = data55.decode()
print(str56)
#(輸出)AAAAA is a good good man 趙

29.(str).isalpha() 檢測字串是否只由字母組成。 判斷如果字元傳中至少有一個字元(長度大於1) 且所有字元都是字母 返回True 否則返回false

str54 = "sunckisagoodman"
print(str54.isalpha())
#(輸出)True

30.(str).isalnum() 檢測字串是否只由字母和數字組成。 #如果字元傳中至少有一個字元(長度大於1)且所有字元都是字母或者數字返回True,否則返回False。

str55 = "aa123"
print(str55.isalnum())
#(輸出)True

31.(str).issupper() 檢測字串是否只由大寫英文字母或者數字組成。 #如果字元傳中至少有一個字元(長度大於1) 且所有的字元都是大寫英文字母或者數字返回True,否則返回False。

print("ABC".isupper())			#(輸出)True
print("ABC1".isupper())			#(輸出)True
print("ABC#".isupper())			#(輸出)True
print("ABCa".isupper())			#(輸出)False

32.(str).islower() 檢測字串是否只由小寫字母組成。 #如果字元傳中至少有一個字元(長度大於1) 且所有的字元都是小寫字母返回True ,否則返回False

print("ABC".isupper())			#(輸出)True
print("ABC1".isupper())			#(輸出)False
print("ABC#".isupper())			#(輸出)True
print("ABCa".isupper())			#(輸出)True

33.(str).istitle() 檢測字串是否首字母大寫。 如果字串是首字母大寫的返回True,否則返回False

print("Sunck Is".istitle())		 #(輸出)True
print("sunck is".istitle()) 	 #(輸出)False

34.(str).isdigit() 檢測字串是否只由數字組成。 如果字元傳中只包含數字,返回True 否則返回False

print("123".isdigit())			#(輸出)True
print("123a".isdigit())			#(輸出)False
print("123B".isdigit())			#(輸出)False

35.(str).isnumeric () 檢測字串是否只由數字組成。 如果字元傳中只包含數字,返回True 否則返回False

print("1234".isnumeric())		#(輸出)True
print("1234a".isnumeric())		#(輸出)False
print("1234A".isnumeric())		#(輸出)False

36.(str).isdecimal () 字元傳中只包含十進位制字元

print("1234".isdecimal())		#(輸出)True
print("1234a".isdecimal())		#(輸出)False
print("1234B".isdecimal())		#(輸出)False

36.(str).isspace () 字元傳中只包含十進位制字元

print(" ".isspace())			#(輸出)True
print("   ".isspace())			#(輸出)True
print("\t ".isspace()) 			#(輸出)True		 	# \t 四個空格
print("\n".isspace())			#(輸出)True
print("\r".isspace())			#(輸出)True