1. 程式人生 > >day02.1-字串內建方法

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)之間的子串賦值給變數v2
9 """

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 """