4.4Python資料型別(4)之字串函式
阿新 • • 發佈:2018-12-26
目錄:
1.字串的查詢計算
2.字串的轉換
3.字串的填充壓縮
4.字串的分割拼接
5.字串的判定
(一)字串的查詢計算
(1)len(str)計算字串的總數
(2)find()與rfind()查詢字元所在的索引
(3)index()與rindex()查詢字元所在的索引
# 字串的計算方法: # len(str)計算字串的字元個數 n = "abcdef\n" print("字串的總長度:", len(n)) # find(sub,start,end)查詢字元索引引數(從左到右) # 引數1-sub 需要檢索的字串 # 引數2-start 檢索的起始位置 可省略, 預設0 # 引數3-end 檢索的結束位置 可省略, 預設len(str) print("find字元‘c’的下標:", n.find("c")) # rfind功能使用, 同find,區別:從右往左進行查詢 print("rfind字元‘c’的下標:", n.rfind("c")) # index(sub, start=0, end=len(str))查詢字元索引引數(從左到右) # 引數1-sub 需要檢索的字串 # 引數2-start 檢索的起始位置可省略, 預設0 # 引數3-end 檢索的結束位置可省略, 預設len(str) print("index字元‘c’的下標:", n.index("c")) # rindex功能使用, 同index,區別:從右往左進行查詢 print("index字元‘c’的下標:", n.rindex("c")) # count(sub, start=0, end=len(str))計算某個子字串的出現個數 # 引數1-sub 需要檢索的字串 # 引數2-start 檢索的起始位置可省略, 預設0 # 引數3-end 檢索的結束位置可省略, 預設len(str) print("count字元‘c’出現的次數:", n.count("c")) --------------輸出-------------------- 字串的總長度: 7 find字元‘c’的下標: 2 rfind字元‘c’的下標: 2 index字元‘c’的下標: 2 index字元‘c’的下標: 2 count字元‘c’出現的次數: 1
注意:find與index的唯一區別在於在於他們找不到對應的字元的索引時報錯的情況不一樣。
(1)find()與rfind()找不到時,返回-1
(2)index()與rindex()找不到時,異常錯誤
(二)字串的轉換
# 字串的轉換 string = "abcdef" # replace使用給定的新字串 替換原字串中的 舊字串 # replace(old, new[, count]) # 引數1-old需要被替換的舊字串 # 引數2-new替換後的新字串 # 引數3-count替換的個數可省略, 表示替換全部 print("v代替c後的字串:", string.replace("c", "v", 1)) # capitalize將字串首字母變為大寫 # capitalize() # 引數:無 print("將字串首字母變為大寫", string.capitalize()) # title將字串每個單詞的首字母變為大寫 # title() # 引數:無 print("將字串每個單詞的首字母變為大寫", string.title()) # lower將字串每個字元都變為小寫 # lower() # 引數:無 str2 = "ABCDEF" print("將字串每個字元都變為小寫", str2.lower()) # upper將字串每個字元都變為大寫 # upper() # 引數:無 str3 = "abcdef" print("將字串每個字元都變為大寫", str3.upper()) ---------------輸出------------------- v代替c後的字串: abvdef 將字串首字母變為大寫 Abcdef 將字串每個單詞的首字母變為大寫 Abcdef 將字串每個字元都變為小寫 abcdef 將字串每個字元都變為大寫 ABCDEF
注意:源字串並沒有改變,只是返回改變後的字元。
還有三個與上述方法對應的判斷方法:
(1)istitle
(2)islower
(3)isupper
(三)字串的填充壓縮
# 字元的填充與壓縮 str1 = "abc" # ljust根據指定字元(1個), 將原字串填充夠指定長度 # l 表示原字串靠左 # 語法ljust(width, fillchar) # 引數1-width 指定結果字串的長度 # 引數2-fillchar 如果原字串長度 < 指定長度時 填充過去的字元 print("字串靠L 填充X後", str1.ljust(8, "x")) # rjust根據指定字元(1個), 將原字串填充夠指定長度 # r 表示原字串靠右 # 語法rjust(width, fillchar) # 引數1-width 指定結果字串的長度 # 引數2-fillchar 如果原字串長度 < 指定長度時 填充過去的字元 print("字串靠R 填充X後", str1.rjust(8, "x")) # center根據指定字元(1個), 將原字串填充夠指定長度 # c 表示原字串靠右 # 語法center(width, fillchar) # 引數1-width 指定結果字串的長度 # 引數2-fillchar 如果原字串長度 < 指定長度時 填充過去的字元 print("字串靠C 填充X後", str1.center(8, "x")) # lstrip移除所有原字串指定字元(預設為空白字元) # l 表示從左側開始移除 # 語法 lstrip(chars) # 引數-chars 需要移除的字符集 str2 = "wwwwwdfddfdddrttttt" print("把d刪除後的字串", str2.lstrip("w")) # rstrip移除所有原字串指定字元(預設為空白字元) # r 表示從左側開始移除 # 語法 lstrip(chars) # 引數-chars 需要移除的字符集 str2 = "wwwwwdfddfdddrttttt" print("把右邊的t刪除後的字串", str2.rstrip("t")) --------------輸出------------------ 字串靠L 填充X後 abcxxxxx 字串靠R 填充X後 xxxxxabc 字串靠C 填充X後 xxabcxxx 把d刪除後的字串 dfddfdddrttttt 把右邊的t刪除後的字串 wwwwwdfddfdddr
(四)字串的分割拼接
# 字串的分割
# split
# 作用 將一個大的字串分割成幾個子字串
# 語法 split(sep, maxsplit)
# 引數1-sep 分隔符
# 引數2-maxsplit 最大的分割次數 可省略, 有多少分割多少
# 返回值 分割後的子字串, 組成的列表 list 列表型別
str1 = "df-fdfgdf-12345-"
print("split", str1.split("-", 2))
# partition
# 作用 根據指定的分隔符, 返回(分隔符左側內容, 分隔符, 分隔符右側內容)
# 語法 partition(sep)
# 引數-sep 分隔符
str2 = "zsj-2038145339"
print("partition:", str2.partition("-"))
# splitlines 按照換行符(\r, \n), 將字串拆成多個元素, 儲存到列表中
# 語法 splitlines(keepends)
# 引數-keepends 是否保留換行符 bool 型別
str3 = "jkdjfkd\n123456"
print("splitlines:", str3.splitlines()) # 預設為False
print("splitlines:", str3.splitlines(True)) # 是 保留換行符
# join 根據指定字串, 將給定的可迭代物件, 進行拼接, 得到拼接後的字串
# 語法 join(iterable)
# 引數 iterable 可迭代的物件 字串 元組 列表 ...
items = ["zyg", "機械", "175"]
str4 = "-".join(items)
print("join:", str4)
-----------------輸出--------------------
split ['df', 'fdfgdf', '12345-']
partition: ('zsj', '-', '2038145339')
splitlines: ['jkdjfkd', '123456']
splitlines: ['jkdjfkd\n', '123456']
join: zyg-機械-175
(五)字串的判定
# 字元的判定
# isalpha 字串中是否所有的字元都是字母 不包含該數字,特殊符號,標點符號等等
# 語法 isalpha()
# 引數 無
str1 = "apple"
str2 = "apple123"
print("isalpha:apple", str1.isalpha())
print("isalpha:apple123", str2.isalpha())
# isdigit 字串中是否所有的字元都是數字 不包含該字母,特殊符號,標點符號等等
# 語法 isdigit()
# 引數 無
str3 = "123456"
print("isdigit: apple123", str2.isdigit())
print("isdigit: 123456", str3.isdigit())
# isalnum 字串中是否所有的字元都是數字或者字母 不包含該特殊符號,標點符號等等
# 語法 isalnum()
# 引數 無
str4 = "+++--***&&&"
print("isalnum: apple123", str2.isalnum() )
print("isalnum: +++--***&&&", str4.isalnum() )
# isspace 字串中是否所有的字元都是空白符 包括空格,縮排,換行等不可見轉義符
# 語法 isspace()
# 引數 無
str5 = "\n\n\t\t "
print(r"isspace: \n\n\t\t", str5.isspace())
print("isspace: +++--***&&&", str4.isspace())
# startswith 判定一個字串是否以某個字首開頭
# 語法 startswith(prefix, start=0, end=len(str))
# 引數1-prefix 需要判定的字首字串
# 引數2-start 判定起始位置
# 引數3-end 判定結束位置
print("startswith :a", str1.startswith("a", 0, -1))
print("startswith :x", str1.startswith("x", 0, -1))
# endswith 判定一個字串是否以某個字尾結尾
# 語法 endswith(suffix, start=0, end=len(str))
# 引數1-suffix 需要判定的字尾字串
# 引數2-start 判定起始位置
# 引數3-end 判定結束位置
print("endswith: e", str1.endswith("e", 0, -1))
print("endswith: x", str1.endswith("x", 0, -1))
# in 判定一個字串, 是否被另外一個字串包含
# not in 判定一個字串, 是否不被另外一個字串包含
print("i是否在'string'", "i" in "string")
print("i是否不在'string'", "i" not in "string")
--------------輸出------------------
isalpha:apple True
isalpha:apple123 False
isdigit: apple123 False
isdigit: 123456 True
isalnum: apple123 True
isalnum: +++--***&&& False
isspace: \n\n\t\t True
isspace: +++--***&&& False
startswith :a True
startswith :x False
endswith: e False
endswith: x False
i是否在'string' True
i是否不在'string' False
本小節結束!
我是張一根,一個機械專業的大學生,一個在讀本科的計算機愛好者,期盼和你一起交流計算機的知識,讓我們在這個大時代裡一起進步。