1.1.4字符串
Python中的字符串也是一種對象類型,用str表示,通常用單引號或者雙引號包裹起來(多行字符串通常用三重引號表示),可以用type()查看對象類型。
--"abc"
--"""qwer"""
--'asd'
--'''zxc'''(注意多行注釋也是3重單引號)
1.1.4.1字符串的連接和復制
--用 + 來連接兩個字符串(注意:用 + 連接的兩個對象必須是同一類型)
--用*來復制一個字符串(注意:不能將字符串復制小數次)
1.1.4.2轉義字符和原始字符串
--當字符串中有特殊符號時,需要用到轉義字符;
轉義字符 | 描述 |
---|---|
\(在行尾時) | 續行符 |
\\ | 反斜杠符號 |
\' | 單引號 |
\" | 雙引號 |
\a | 響鈴 |
\b | 退格(Backspace) |
\e | 轉義 |
\000 | 空 |
\n | 換行 |
\v | 縱向制表符 |
\t | 橫向制表符 |
\r | 回車 |
\f | 換頁 |
\oyy | 八進制數,yy代表的字符,例如:\o12代表換行 |
\xyy | 十六進制數,yy代表的字符,例如:\x0a代表換行 |
\other | 其它的字符以普通格式輸出 |
--原始字符串是指字符串里面的每個字符都是原始含義,由r開頭引起的字符串就是原始字符串。
1.1.4.3切片和索引
--切片和索引適用於序列(列表、元組、字典、集合)
--索引:用下標來表示字符串中個每個元素(python中下標從0開始),用index()函數來查找字符串中元素的索引
--切片:通過下標來獲取整體或者部分的字符串(注意切片的讀取順序),切片得到的字符串並不改變原字符串(根本原因是字符串為不可變對象)
注意:序列的切片完整表示為 seq[start:end:step],start是開始的索引,如果為空就表示從第一個元素開始;end是結束的索引,如果為空就表示到末尾;step是步長,如果為空就表示步長為1。
1.1.4.4字符串的基本操作
字符串也是一種序列,序列都有以下操作。
--len() 求序列的長度,返回值默認為int
--+ 連接兩個序列
--* 重復序列元素
--in 判斷元素是否在序列中(not in ),注意判斷的元素必須為連續元素
--max 返回最大值,順序為ASCII中的順序
--min 返回最小值
--ord()得到一個字符所對應的的ASCII的數字編碼
--chr()得到數字對應的字符編碼
1.1.4.5字符串的格式化輸出
--作用:使得輸出內容具有連續性和可讀性。可以使用format()方法來對字符串進行格式化輸出,可以用dir(str)查看字符串的其他方法;help(str.format)可以查看具體用法。
dir()函數:不帶參數時,返回當前范圍內的變量、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表
1.1.4.5字符串的常用方法
--基本方法如下:

#字符串的常用方法 交互式模式下可以用dir(str)查看 print(dir(str)) # 1:首字母大寫 # test = "qwerdf" # a = test.capitalize() #將字符串的首字母變為大寫 # print(a) #2:元素變小寫 # test = "qWErfΓ" # a = test.casefold() #對於其他語言(非漢語或英文)中把大寫轉換為小寫的情況只能用casefold()方法 # b = test.lower() #lower()方法只對ASCII編碼,就是‘A-Z’有效, # print(a,b) #3:字符串填充以及對齊 # test = "qwerdf" # a = test.center(10,"啊") #設置寬度以及填充符並將字符串居中 # b = test.ljust(15,"@") #左對齊字符串並用填充符填充 # c = test.rjust(20,"%") #右對齊字符串並用填充符填充 # d = test.zfill(25) #右對齊字符串並用0作為填充符填充 # print(a) # print(b) # print(c) # print(d) #4:在字符串中尋找子字符串出現的次數 # test = "qwerdfqwerzxcv" # a = test.count("er",2,15) #傳入的兩個參數分別為字符串中的始末下標 # print(a) #5:判斷字符串及其子字符串的開頭和結尾是否為特定字符 # test = "qwerdf" # a = test.startswith("qw",0,8) #判斷字符串的開始字符 # b = test.endswith("df",1,3) #判斷字符串的結束字符 # print(a,b) #6:將字符串中的制表符\t轉為空格,可以用來格式化輸出 # test = "username\tpassword\temail\nqingyu\t12345678\tqingyu@qq.com" # a = test.expandtabs(20) #按照傳入的值進行斷句,將\t和之前的字符串加起來等於20 # print(a) #7:查找元素 # test = "qwerdf" # a = test.find("q",1,5) #獲取元素的下標,若元素不存在字符串中返回值為-1,反之為其索引 # a1 = test.rfind("f") # b = test.index("q",0,5) #獲取元素的下標,若元素不存在字符串中則報錯,反之為其索引 # b1 = test.rindex("q") # print(a,b) #8:格式化字符串 # a = "my name is {0},i am{1} old" # b = "my name is {name},i am{age} old" #可以以變量名來格式化 # c = {"name": "qingyu", "age": 20} #針對字典類型的使用format_map()方法 # print(a.format("qingyu","20")) # print(b.format(name = "qingyu",age = "20")) # print("my name is {name},i am{age} old".format_map(c)) #9:判斷字符串組成 # a = "qwerdf123" # b = "漢字qwe" # c = " " # d = "123" # e = "三四五123" # f = "①123" # print(a.isalnum()) #字符串中是否只由含字母(漢字)和數字組成,一個漢字占3個字節,占一個字符 # print(b.isalpha()) #字符串中是否只由含字母(漢字)組成 # print(c.isspace()) #字符串中是否只由空格組成 # print(d.isdecimal()) #字符串中是否只由十進制數字組成 # print(e.isnumeric()) #字符串中是否只由數字字符組成 # print(f.isdigit()) #字符串中是否只由數字組成 #10:字符串中是否存在不可顯示的字符,\t制表符,\n換行符 # test = "oiuas\tdfkj" # a = test.isprintable() # print(a) #11:判斷字符串是否是標題格式,將字符串轉換為標題格式 # test = "i am a student" # a = test.istitle() #判斷字符串是否是標題格式 # print(a) # b = test.title() #將字符串轉換為標題格式 # print(b) # c = b.istitle() # print(c) #12:判斷字符串是否全部是大小寫,將字符串轉換為大小寫 # test = "qingyu" # a = test.islower() #斷字符串是否全部是小寫 # b = test.lower() #將字符串轉換為小寫 # print(a,b) # c = test.isupper() #斷字符串是否全部是大寫 # d = test.upper() #將字符串轉換為大寫 # print(c,d) #13:將字符串中的每一個元素按照指定分隔符進行拼接 # test = "qwerdf" # a = "*".join(test) # print(a,type(a)) #14:使用字符串中的元素來分割字符串,返回字符串中單詞的列表 # test1 = "qwer1234asdf1234adxf1adff35134" # a = test1.split("w") #默認分割完全(會拿掉分割的元素) # b = test1.split("1",3) #3表示分割次數,即就是分割成3+1個元素的列表,默認分割順序為由左到右 # print(a,b) # c = test1.rsplit("1") #分割順序為從右到左 # print(c) # test2 = "qwrrd\n213211\n213214" # d = test2.splitlines() #默認不顯示保留換行符 # e = test2.splitlines(True) #按照換行符來分割,參數為True則顯示保留換行符 # f = test2.splitlines(False) # print(d,e,f) #15: # test = "qwer1234asdf1234adxf1adff35134" # a = test.partition("f") #按照指定字符分割,若能分割則分割為3部分(保留分割元素) # b = test.rpartition("f") #從末尾開始分割 # print(a,b) #16:移除字符串中的特定字符串(空格也是字符串) # test = " qwerdf " # a = test.strip() #1:移除空白,\t,\n # print(a) # print(test) # test1 = "qwerdf" # b = test1.strip("qwdf") #2:刪除字符串開頭和結尾指定qwdf的字符 # c = test1.lstrip("qwdf") #2:從左到右移除特定字符,優先最多匹配(刪除開頭) # d = test1.rstrip("exrdf") #2:從右到左移除特定字符,優先最多匹配(刪除結尾) # print(b) # print(c,d) #17:按照對應關系替換相應字符串 # test1 = "qwerdf" # test2 = "123456" # m = str.maketrans(test1,test2) #創建對應關系 # test = "reassytvxqf7qeqeqteihoqweqwesaaqerdft" # a = test.translate(m) #按照對應關系進行替換 # print(a) #18:大小寫轉換 # test1 = "QWERdf" # test2 = "qwerDF" # print(test1.swapcase()) # print(test2.swapcase()) #19:查看字符串是否是標識符 符合數字,字母,下划線就是標識符 # import keyword # print(keyword.kwlist) # test = "a123" # print(test.isidentifier()) #20:替換字符串 # test = "123qwe456w3qrwt344314" # a1 = test.replace("3","999") #默認參數為-1,即就是替換字符串中所有滿足要求的元素 # print(a1) # a2 = test.replace("3","999",2) #將默認參數設置為指定值,可以替換指定次數 # print(a2) 字符串的基本方法
--字符串一旦創建,不可修改;一旦修改或者拼接,都會重新生成新字符串
--字符串常用方法如下:

#!/usr/bin/env python # -*- coding: utf-8 -*- #1:元素變小寫 # test = "qWErfΓ" # a = test.casefold() #對於其他語言(非漢語或英文)中把大寫轉換為小寫的情況只能用casefold()方法 # b = test.lower() #lower()方法只對ASCII編碼,就是‘A-Z’有效, # print(a,b) #2:字符串填充以及對齊 # test = "qwerdf" # a = test.center(10,"啊") #設置寬度以及填充符並將字符串居中 # b = test.ljust(15,"@") #左對齊字符串並用填充符填充 # c = test.rjust(20,"%") #右對齊字符串並用填充符填充 # d = test.zfill(25) #右對齊字符串並用0作為填充符填充 # print(a) # print(b) # print(c) # print(d) #3:查找元素 # test = "qwerdf" # a = test.find("q",1,5) #獲取元素的下標,若元素不存在字符串中返回值為-1,反之為其索引 # a1 = test.rfind("f") # b = test.index("q",0,5) #獲取元素的下標,若元素不存在字符串中則報錯,反之為其索引 # b1 = test.rindex("q") # print(a,b) #4:格式化字符串 # a = "my name is {0},i am{1} old" # b = "my name is {name},i am{age} old" #可以以變量名來格式化 # c = {"name": "qingyu", "age": 20} #針對字典類型的使用format_map()方法 # print(a.format("qingyu","20")) # print(b.format(name = "qingyu",age = "20")) # print("my name is {name},i am{age} old".format_map(c)) #5:判斷字符串是否全部是大小寫,將字符串轉換為大小寫 # test = "qingyu" # a = test.islower() #斷字符串是否全部是小寫 # b = test.lower() #將字符串轉換為小寫 # print(a,b) # c = test.isupper() #斷字符串是否全部是大寫 # d = test.upper() #將字符串轉換為大寫 # print(c,d) #6:將字符串中的每一個元素按照指定分隔符進行拼接 # test = "qwerdf" # a = "*".join(test) # print(a,type(a)) #7:使用字符串中的元素來分割字符串,返回字符串中單詞的列表 # test1 = "qwer1234asdf1234adxf1adff35134" # a = test1.split("w") #默認分割完全(會拿掉分割的元素) # b = test1.split("1",3) #3表示分割次數,即就是分割成3+1個元素的列表,默認分割順序為由左到右 # print(a,b) # c = test1.rsplit("1") #分割順序為從右到左 # print(c) # test2 = "qwrrd\n213211\n213214" # d = test2.splitlines() #默認不顯示保留換行符 # e = test2.splitlines(True) #按照換行符來分割,參數為True則顯示保留換行符 # f = test2.splitlines(False) # print(d,e,f) #8:移除字符串中的特定字符串(空格也是字符串) # test = " qwerdf " # a = test.strip() #1:移除空白,\t,\n # print(a) # print(test) # test1 = "qwerdf" # b = test1.strip("qwdf") #2:刪除字符串開頭和結尾指定qwdf的字符 # c = test1.lstrip("qwdf") #2:從左到右移除特定字符,優先最多匹配(刪除開頭) # d = test1.rstrip("exrdf") #2:從右到左移除特定字符,優先最多匹配(刪除結尾) # print(b) # print(c,d) #9:按照對應關系替換相應字符串 # test1 = "qwerdf" # test2 = "123456" # m = str.maketrans(test1,test2) #創建對應關系 # test = "reassytvxqf7qeqeqteihoqweqwesaaqerdft" # a = test.translate(m) #按照對應關系進行替換 # print(a) #10:替換字符串 # test = "123qwe456w3qrwt344314" # a1 = test.replace("3","999") #默認參數為-1,即就是替換字符串中所有滿足要求的元素 # print(a1) # a2 = test.replace("3","999",2) #將默認參數設置為指定值,可以替換指定次數 # print(a2)
--注意事項如下:

#注意事項1:序列的的遍歷可以用for循環實現 # test = "我愛你中國" # for a in test: # print(a) #注意事項2:range()用法是生成連續或者不連續但有規律的整數序列,按照開始,結束,步長來生成整數序列 # a = range(1,100,5) # print(a) #python3中只有在for中時才會創建序列,Python2中會直接創建 # for i in a: # print(i) #小練習:根據用戶輸入的值,輸出每一個字符以及當前字符所在的索引位置 # user_word = input("請輸入:") #input()返回值是str類型,len()返回值是int類型 # for i in range(len(user_word)): # print(user_word[i],i)