day02.1-字串內建方法
字串的定義:test = "zizaijiapu"
特點:1. 字串是可迭代物件;
2. 字串中各元素是有序的;
3. 字串一經建立,其內容值不可修改。
1. 檢視變數資料型別
1 a = 11 2 b = "zazaijiapu" 3 print(type(a),type(b)) 4 """" 5 執行結果:<class 'int'> <class 'str'> 6 結果分析:變數a的資料型別為int;變數b的資料型別為str 7 """
2. 將字串轉換為任意進位制整數
1 a = "18" 2 b1 = int(a) 3 b2 = int(a, base=16) 4 print(b1, b2) 5 """ 6 執行結果:18 24 7 結果分析:其中base形參用於指定轉換後整數的進位制數,預設為十進位制 8 """
3. 獲取字串中指定索引位置處的元素值
1 test = "zizaijiapu" 2 v1 = test[3] 3 v2 = test[0:4] 4 print(v1,v2) 5 """ 6 執行結果:a ziza 7 結果分析:
將源字串中索引位置index=3處的字元元素賦值給變數v1 8 將源字串中索引位置index位於[0,4)之間的子串賦值給變數v29 """
4. 依次順序檢視字串中的各字元元素
1 test = "wo" 2 for item in test: 3 print(item) 4 """ 5 執行結果: 6 w 7 o 8 結果分析:按照字串的索引順序依次輸出各字元元素 9 """
5. 統計字串中字元元素個數
1 test = "zizaijiapu" 2 print(len(test)) 3 """ 4 執行結果:10 5 結果分析:源字串由10個字元元素構成 6 """
6. 統計子串在字串中出現的次數
1 test = "alexalex" 2 print(test.count("le")) 3 """ 4 執行結果:2 5 結果分析:子串"le"在源字串中共出現了2次 6 """
7. 檢視字串中子串開始出現的索引位置
1 test = "zizaizaijiapu" 2 print(test.find("ai")) 3 print(test.find("ai",4,8)) 4 """ 5 執行結果: 6 3 7 6 8 結果分析: 9 在不指定源字串查詢索引index範圍的情況下,預設返回子串"ai"首次出現的索引位置; 10 指定源字串查詢索引index範圍[4,8)時,返回子串"ai"在該範圍內首次出現的索引位置 11 """
8. 調整字串中首字母為大寫形式
1 test = "zizai jiapu" 2 print(test.capitalize()) 3 """ 4 執行結果:Zizai jiapu 5 結果分析:將源字串中的首字母"z"調整為大寫形式,其他字母大小寫形式不變 6 """
9. 調整字串中所有小寫字母為大寫形式
1 test = "ZiZaiJiaPu" 2 print(test.upper()) 3 """ 4 執行結果:ZIZAIJIAPU 5 結果分析:將源字串中所有的小寫字母轉換為大寫形式 6 """
10. 調整字串中所有大寫字母為小寫形式
1 test = "ZiZaiJiaPu" 2 print(test.casefold()) 3 print(test.lower()) 4 """ 5 執行結果: 6 zizaijiapu 7 zizaijiapu 8 結果分析:將源字串中所有的大寫字母轉換為小寫形式;兩者所不同的是,前者還可以完成其他語言中字母的大小寫形式轉換 9 """
11. 實現字串中大小寫字母的相互轉換
1 test = "ZiZaiJiaPu" 2 print(test.swapcase()) 3 """ 4 執行結果:zIzAIjIApU 5 結果分析:將源字串中所有大寫字母轉換為小寫形式,同時將所有小寫字母轉換為大寫形式 6 """
12. 將字串轉換為標題型書寫格式
1 test = "zi zai jia pu" 2 print(test.title()) 3 """ 4 執行結果:Zi Zai Jia Pu 5 結果分析:將源字串中每個單詞的首字母轉換為大寫形式 6 """
13. 在字串各字元間插入指定形式的分隔符
1 test = "zizaijiapu" 2 v = "_".join(test) 3 print(v) 4 """ 5 執行結果:z_i_z_a_i_j_i_a_p_u 6 結果分析:在源字串中每個字元間插入分隔符"_" 7 """
14. 在各字串間插入指定分隔符後列印輸出(該語句不能賦予其他變數)
1 print("root","X","0","0", sep=":") 2 """ 3 執行結果:root:X:0:0 4 結果分析:在源字串間插入分隔符":"後輸出。特別說明,該語句只用於輸出顯示,無法賦值予其他變數 5 """
15. 將字串中各佔位符替換為指定字元
1 test = "my name is {name},i am {age} years old" 2 v = test.format(name="alex",age=18) 3 print(v) 4 """ 5 執行結果:my name is alex,i am 18 years old 6 結果分析:將源字串中的佔位符{name}、{age}分別替換為alex、18 7 """
16. %字串的替換與拼接
1 test = "i am %s, my hobby is %s, class is %d, ranking is %.3f%%" %("ljp","coding",18,1.04536829) 2 print(test) 3 """ 4 執行結果:i am ljp, my hobby is coding, class is 18, ranking is 1.045% 5 結果分析:將"%s"分別替換為"ljp""coding",將"%d"替換為18,將"%.3f"替換為1.04536829並保留3位小數,"%%"表示列印顯示百分號,源字串中其他字元保持不變 6 """
17. 字串中各字元之間的管道定義與替換
1 test = "zizaijiapu" 2 m = str.maketrans("zi","12") 3 test_new = test.translate(m) 4 print(test_new) 5 """ 6 執行結果:121a2j2apu 7 結果分析:將源字串中字元"z"、"i"全部替換為"1"、"2" 8 """
18. 字串中子串之間的一一對應替換
1 test = "alexalex" 2 v = test.replace("ex","bbb",2) 3 print(v) 4 """ 5 執行結果:albbbalbbb 6 結果分析:在源字串中,將前2個子串"ex"替換為"bbb",其他字元保持不變 7 """
19. 按照指定變化步長建立連續“數字型”字元
1 test = range(3) 2 for item in test: 3 print(item) 4 """ 5 執行結果: 6 0 7 1 8 2 9 結果分析:在建立連續字元時,預設起始字元為"0",預設變化步長為1 10 """
1 test = range(8,2,-2) 2 for item in test: 3 print(item) 4 """ 5 執行結果: 6 8 7 6 8 4 9 結果分析:以"8"為起始字元,以"2"為終止字元,以"-2"為變化步長,建立連續字元 10 """
20. 去除字串中左邊空格
1 test = " zizaijiapu " 2 v1 = test.lstrip() #去除字串中左邊空格 3 v2 = test.rstrip() #去除字串中右邊空格 4 v3 = test.strip() #去除字串中左右兩邊空格 5 print(v1) 6 print(v2) 7 print(v3) 8 """ 9 執行結果: 10 zizaijiapu 11 zizaijiapu 12 zizaijiapu 13 結果分析:去除源字串中對應位置的空格 14 """
注:還可以使用該功能去除字串中對應位置的指定字元,分別為:test.lstrip("x")、test.rstrip("x")、test.strip("x")
21. 增加字串長度,並用指定字元填充空白位置
1 test = "zizaijiapu " 2 v1 = test.ljust(20,"*") #源字串左對齊,"*"填充空白位置 3 v2 = test.rjust(20,"*") #源字串右對齊,"*"填充空白位置 4 v3 = test.center(20,"*") #源字串居中,"*"填充空白位置 5 print(v1) 6 print(v2) 7 print(v3) 8 """ 9 執行結果: 10 zizaijiapu ********* 11 *********zizaijiapu 12 ****zizaijiapu ***** 13 結果分析:按照不同對齊方式將源字串移動到相應位置,長度增加後的空白位置用字元"*"填充 14 """
22. 將字串按照指定字元個數的方式拆分
1 test = "zi\tzai\njia\tpu " 2 v = test.expandtabs(10) 3 print(v) 4 """ 5 執行結果: 6 zi zai 7 jia pu 8 結果分析:將源字串按照每10個字元為一個單元進行分割,當遇到製表符或換行符且字元個數不夠時,用空格填充顯示 9 """
23. 以指定字元為基準,將字串分割成3段
1 test = "zizaijiapu" 2 v1,v2,v3 = test.partition("a") #以左起第一個指定字元為基準,將源字串分割成3段 3 print(v1,v2,v3) 4 v1,v2,v3 = test.rpartition("a") #以右起第一個指定字元為基準,將源字串分割成3段 5 print(v1,v2,v3) 6 """ 7 執行結果: 8 ziz a ijiapu 9 zizaiji a pu 10 結果分析:前者以左邊第一個"a"進行源字串的分割,後者以右邊第一個"a"進行源字串的分割 11 """
24. 以指定字元為基準將字串分割成若干段,並刪除指定字元
1 test = "zizaijiapuduguqiubaifengaqingyang" 2 v1 = test.split("a",4) #左起遍歷字串,以指定字元"a"為基準,將源字串分割成4段 3 v2 = test.rsplit("a",4) #右起遍歷字串,以指定字元"a"為基準,將源字串分割成4段 4 print(v1) 5 print(v2) 6 """ 7 執行結果: 8 ['ziz', 'iji', 'puduguqiub', 'ifeng', 'qingyang'] 9 ['zizaiji', 'puduguqiub', 'ifeng', 'qingy', 'ng'] 10 結果分析: 11 前者左起遍歷字串,每遇到字元"a"便將源字串進行拆分,並刪除"a"; 12 後者右起遍歷字串,每遇到字元"a"便將源字串進行拆分,並刪除"a"; 13 """
25. 根據換行符分割字串
1 test = "zizai\njiapu" 2 v1 = test.splitlines(True) 3 v2 = test.splitlines(False) 4 print(v1) 5 print(v2) 6 """ 7 執行結果: 8 ['zizai\n', 'jiapu'] 9 ['zizai', 'jiapu'] 10 結果分析:以換行符為參考分割源字串。當傳入引數為"True"時,保留換行符;當傳入引數為"False"時,刪除換行符 11 """
26. 判斷字串中字元是否全為數字型別
1 test1 = "1122二②33" 2 test2 = "1122②33" 3 test3 = "112233" 4 print(test1.isnumeric()) 5 print(test2.isdigit()) 6 print(test3.isdecimal()) 7 """ 8 執行結果: 9 True 10 True 11 True 12 結果分析:當源字串中字元全部為數字型別時,返回True,否則返回False。三條語句所不同的是對於字元"數字型別"的定義範圍不同 13 """
判斷字串中字元是否全為字母型別
1 test = "AaBbCc" 2 print(test.isalpha()) 3 """ 4 執行結果:True 5 結果分析:當源字串中字元全部為字母型別時,返回True,否則返回False。 6 """
判斷字串中字元是否全為數字或字母型別
1 test = "1一①Aa2二②Bb三3③Cc" 2 print(test.isalnum()) 3 """ 4 執行結果:True 5 結果分析:當源字串中字元全部為數字或字母型別時,返回True,否則返回False。 6 """
27. 判斷字串中字元是否全為小寫字母
1 test = "zizaijiapu" 2 print(test.islower()) 3 """ 4 執行結果:True 5 結果分析:當源字串中字元全部為小寫字母時,返回True,否則返回False。 6 """
判斷字串中字元是否全為大寫字母
1 test = "ZIZAIJIAPU" 2 print(test.isupper()) 3 """ 4 執行結果:True 5 結果分析:當源字串中字元全部為大寫字母時,返回True,否則返回False。 6 """
28. 判斷字串是否以指定的子串內容開始
1 test = "zizaijiapu" 2 print(test.startswith("zi")) #判斷源字串是否以"zi"開始 3 print(test.startswith("ai",3,7)) #判斷源字串中索引index位置位於[3,7)之間的子串是否以"ai"開始 4 """ 5 執行結果: 6 True 7 True 8 結果分析:當源字串中對應位置範圍內的子串以指定內容的子串開始時,返回True,否則返回False。 9 """
判斷字串是否以指定的子串內容結束
1 test = "zizaijiapu" 2 print(test.endswith("pu")) #判斷源字串是否以"zpu結束 3 print(test.endswith("ji",3,7)) #判斷源字串中索引index位置位於[3,7)之間的子串是否以"ji"結束 4 """ 5 執行結果: 6 True 7 True 8 結果分析:當源字串中對應位置範圍內的子串以指定內容的子串結束時,返回True,否則返回False。 9 """
29. 判斷字串是否滿足識別符號命名規則
1 test = "zi_11_zai_22" 2 print(test.isidentifier()) 3 """ 4 執行結果:True 5 結果分析:當源字串滿足識別符號命名規則(即由數字、字母和下劃線組成,並且以字母或下劃線開始)時,返回True,否則返回False。 6 """
30. 判斷字串是否滿足標題書寫格式
1 test = "Zi Zai Jia Pu" 2 print(test.istitle()) 3 """ 4 執行結果:True 5 結果分析:當源字串滿足標題書寫格式(即字串中每個單詞首字母大寫)時,返回True,否則返回False。 6 """