字符串
概念:
有序的不可變的字符集合-
形式
- 轉(zhuǎn)義字符
轉(zhuǎn)義字符 說明 \t 水平制表符 tab \n 換行 \r 回車 \" 雙引號 \' 單引號 \\ 反斜線 - 非原始字符串
# 使用單引號包含 strOne = '王小熊' # 使用雙引號包含 strTwo = "秦子陽" # 使用 3 個單引號包含 strThree = '''luck''' # 使用 3 個雙引號包含 strFour = """game""" - 原始字符串
# 使用單引號包含 strOne = r'coder' # 使用雙引號包含 strTwo = r"qinzy" # 使用 3 個單引號包含 strThree = r'''87''' # 使用 3 個雙引號包含 strFour = r"""v5""" - 各個形式特點
# 單/雙引號:混合使用 可以避免使用 引號轉(zhuǎn)義符 nameStr = "my name is 'qin'" print(nameStr) # 跨行需要 續(xù)行符 或者 小括號 nameStrOne = "我是" \ "王小熊" \ "87" \ "v5" print(nameStrOne) nameStrTwo = ("have " "a " "happy " "day ") print(nameStrTwo) # 三個 單/雙引號:可以直接跨行書寫,可用于注釋 nameStrThree = """每個系統(tǒng),在剝離了具體的表象之后, 都存在著一個不能被刪除或違反的邏輯基點, 這是整個系統(tǒng)存在的前提。""" print(nameStrThree)
-
常見操作
- 字符串拼接
# str1 + str2 nameStr = "my name is " + "luck" print(nameStr) # str1str2:直接把兩個字符串放在一起 nameStr = "coder""qinzy" print(nameStr) # "xxx%sxxx" % appendStr nameStr = "my name is %s" % "luck" print(nameStr) # str1 * n:字符串乘法 nameStr = "王小熊\t" * 3 print(nameStr) - 字符串切片
1. 概念:獲取一個字符串的某個片段 2. 獲取某一個字符 1) name[下標(biāo)] 2) 下標(biāo):字符串中每個字符的編號 * 負(fù)數(shù)下標(biāo):如果為負(fù)數(shù),則會從尾部開始定位,最后一個字符為 -1 ** 注意:下標(biāo)越界 3. 獲取一個字符串片段 1) name[start:end:step] 2) 注意 * 取值范圍:包含 start,不包含 end ** 默認(rèn)值:起始默認(rèn)值為 0,結(jié)束默認(rèn)值為 整個字符串長度,步長默認(rèn)值為 1 *** 獲取順序:步長 > 0,從左邊到右邊;步長 < 0,從右邊到左邊 3) 反轉(zhuǎn)字符串:str[::-1] nameStr = "coderqinzy" print(nameStr[::-1]) print(nameStr[3:6:2]) print(nameStr[-1:-4:-2]) - 查找計算
- len
""" 作用:計算字符串的字符個數(shù) 語法:len(str) 參數(shù):字符串 返回值:整型,字符個數(shù) """ nameStr = "王小熊" print(len(nameStr)) - find
""" 作用:查找子串索引位置 語法:find(sub, start=0, end=len(str)) 參數(shù):sub, 需要檢索的字符串; start, 檢索的起始位置, 可省略, 默認(rèn) 0; end,檢索的結(jié)束位置, 可省略, 默認(rèn)len(str) 返回值:找到了,指定索引,整型;找不到,-1 注意:從左到右進(jìn)行查找,找到后立即停止 """ nameStr = "xiao xiong" num = nameStr.find("xi", 5, 7) print(num) - rfind
""" 功能使用, 同 find 一樣 區(qū)別:從右往左進(jìn)行查找 """ nameStr = "xiao xiong" num = nameStr.rfind("xi") print(num) - index
""" 作用:獲取子串索引位置 語法:index(sub, start=0, end=len(str)) 參數(shù):sub, 需要檢索的字符串; start, 檢索的起始位置, 可省略, 默認(rèn) 0; end, 檢索的結(jié)束位置, 可省略, 默認(rèn)len(str) 返回值:找到了, 指定索引, 整型; 找不到, 異常 注意:從左到右進(jìn)行查找, 找到后立即停止 """ nameStr = "xiao xiong" num = nameStr.index("xi", 5, 7) print(num) - rindex
""" 功能使用, 同 index 一樣 區(qū)別:從右往左進(jìn)行查找 """ nameStr = "xiao xiong" num = nameStr.rindex("xi") print(num) - count
""" 作用:計算某個子串出現(xiàn)次數(shù) 語法:count(sub, start=0, end=len(str)) 參數(shù):sub, 需要檢索的字符串; start, 檢索的起始位置, 可省略, 默認(rèn) 0; end, 檢索的結(jié)束位置, 可省略, 默認(rèn)len(str) 返回值:子串出現(xiàn)次數(shù),整型 """ nameStr = "xiao xiong" num = nameStr.count("xi", 5, 7) print(num)
- len
- 替代轉(zhuǎn)換
- replace
""" 作用:使用給定的新字符串 替換 原字符串中的 舊字符串 語法:replace(old, new[, count]) 參數(shù):old, 需要被替換的舊字符串; new, 替換后的新字符串; count, 替換的個數(shù), 可省略, 表示替換全部 返回值:替換后的結(jié)果字符串 注意:并不會修改原字符串本身 """ nameStr = "xiao xiong" replaceStr = nameStr.replace("x", "w") print(replaceStr) - capitalize
""" 作用:將字符串 首字母 變?yōu)?大寫 語法:capitalize() 參數(shù):無 返回值:首字母大寫后的新字符串 注意:并不會修改原字符串本身 """ nameStr = "xiao xiong" capitalizeStr = nameStr.capitalize() print(capitalizeStr) - title
""" 作用:將字符串 每個單詞 的 首字母 變?yōu)?大寫 語法:title() 參數(shù):無 返回值:每個單詞首字母大寫后的新字符串 注意:并不會修改原字符串本身 """ nameStr = "xiao xiong*coder&qinzy_fish%apple" capitalizeStr = nameStr.title() print(capitalizeStr) - lower
""" 作用:將字符串每個字符都變?yōu)樾?語法:lower() 參數(shù):無 返回值:全部變?yōu)樾懞蟮男伦址?注意:并不會修改原字符串本身 """ nameStr = "MY NAME IS WANG" lowerStr = nameStr.lower() print(lowerStr) - upper
""" 作用:將字符串每個字符都變?yōu)榇髮?語法:upper() 參數(shù):無 返回值:全部變?yōu)榇髮懞蟮男伦址?注意:并不會修改原字符串本身 """ nameStr = "my name is wang" upperStr = nameStr.upper() print(upperStr)
- replace
- 填充壓縮
- ljust
""" 作用:根據(jù)指定 1 個字符, 將原字符串填充夠指定長度;l, 表示原字符串靠左 語法:ljust(width, fillchar) 參數(shù):width, 指定結(jié)果字符串長度; fillchar, 如果原字符串長度 < 指定長度時, 填充過去的字符 返回值:填充完畢的結(jié)果字符串 注意:不會修改原字符串本身; 填充字符的長度為 1; 只有原字符串長度 < 指定結(jié)果長度時才會填充 """ nameStr = "coderqinzy" print(nameStr.ljust(16, "x")) print(nameStr) - rjust
""" 功能使用, 同 ljust 一樣 區(qū)別:原字符串靠右 """ nameStr = "coderqinzy" print(nameStr.rjust(16, "x")) print(nameStr) - center
""" 功能使用, 同 ljust 一樣 區(qū)別:原字符串居中 """ nameStr = "coderqinzys" print(nameStr.center(16, "x")) print(nameStr) - strip
""" 作用:移除字符串頭尾指定的字符(默認(rèn)為空格) 語法:strip(chars) 參數(shù):需要移除的字符集, 表現(xiàn)形式為字符串; "abc", 表示"a"|"b"|"c" 返回值:移除完畢的結(jié)果字符串 注意:不會修改原字符串本身; 只能刪除開頭和結(jié)尾的字符, 不能刪除中間的字符 """ str = ' wxx ' result_str = str.strip() print(result_str) - lstrip
""" 作用:移除所有原字符串指定字符(默認(rèn)為空白字符); l, 表示僅僅只移除左側(cè) 語法:lstrip(chars) 參數(shù):需要移除的字符集, 表現(xiàn)形式為字符串; "abc", 表示"a"|"b"|"c" 返回值:移除完畢的結(jié)果字符串 注意:不會修改原字符串本身; 若從左側(cè)開始 沒有找到 相關(guān)字符,則不做任何操作 """ nameStr = " my name is coder qin zy " print("|" + nameStr.lstrip() + "|") print("|" + nameStr + "|") nameStr = "mmmmyy name is coder qin zy " print("|" + nameStr.lstrip("my") + "|") print("|" + nameStr + "|") nameStr = "my name is coder qin zy " print("|" + nameStr.lstrip("wo") + "|") print("|" + nameStr + "|") - rstrip
""" 功能使用, 同 lstrip 一樣 區(qū)別:僅僅只移除右側(cè) """ nameStr = "my name is coder qin zy " print("|" + nameStr.rstrip() + "|") print("|" + nameStr + "|") nameStr = "my name is coder qin zyzyzy" print("|" + nameStr.rstrip("zy") + "|") print("|" + nameStr + "|") nameStr = "my name is coder qin zyzyzya " print("|" + nameStr.rstrip("zy") + "|") print("|" + nameStr + "|")
- ljust
- 分割拼接
- split
""" 作用:將一個大的字符串分割成幾個子字符串 語法:split(sep, maxsplit) 參數(shù):sep, 分隔符; maxsplit, 最大的分割次數(shù), 可省略, 有多少分割多少 返回值:分割后的子字符串, 組成的列表, list 列表類型 注意:不會修改原字符串本身 """ infoStr = "wx-18-180-0337-12345678" resultList = infoStr.split("-", 3) print(infoStr) print(resultList) - partition
""" 作用:根據(jù)指定的分隔符, 返回(分隔符左側(cè)內(nèi)容, 分隔符, 分隔符右側(cè)內(nèi)容) 語法:partition(sep) 參數(shù):sep, 分隔符 返回值:如果查找到分隔符, (分隔符左側(cè)內(nèi)容, 分隔符, 分隔符右側(cè)內(nèi)容), tuple 類型; 如果沒有查找到分隔符, (原字符串, "", ""), tuple 類型 注意:不會修改原字符串本身; 從 左側(cè) 開始查找分隔符 """ infoStr = "wx-18-180-0337-12345678" resultList = infoStr.partition("-") print(infoStr) print(resultList) - rpartition
""" 功能使用, 同 partition 一樣 區(qū)別:從 右側(cè) 開始查找分隔符 """ infoStr = "wx-18-180-0337-12345678" resultList = infoStr.rpartition("-") print(infoStr) print(resultList) - splitlines
""" 作用:按照換行符(\r, \n), 將字符串拆成多個元素, 保存到列表中 語法:splitlines(keepends) 參數(shù):keepends, 是否保留換行符, bool 類型 返回值:被換行符分割的多個字符串, 作為元素組成的列表, list 類型 注意:不會修改原字符串本身 """ nameStr = "my name \n is \r wang" resultList = nameStr.splitlines(True) print(resultList) print(nameStr) - join
""" 作用:根據(jù)指定字符串, 將給定的可迭代對象, 進(jìn)行拼接, 得到拼接后的字符串 語法:join(iterable) 參數(shù):iterable, 可迭代對象, 字符串, 元組, 列表... 返回值:拼接好的新字符串 """ items = ["qinzy", "18", "hangzhou"] resultStr = "xxx".join(items) print(resultStr)
- split
- 判定真假
- isalpha
""" 作用:字符串中是否所有的字符都是字母; 不包含數(shù)字, 特殊符號, 標(biāo)點符號等等; 至少有一個字符 語法:isalpha() 參數(shù):無 返回值:是否全是字母, bool 類型 """ nameStr = "coderqinzy" print(nameStr.isalpha()) - isdigit
""" 作用:字符串中是否所有的字符都是數(shù)字; 不包含字母, 特殊符號, 標(biāo)點符號等等; 至少有一個字符 語法:isdigit() 參數(shù):無 返回值:是否全是數(shù)字, bool 類型 """ nameStr = "20180410" print(nameStr.isdigit()) - isalnum
""" 作用:字符串中是否所有的字符都是數(shù)字或者字母; 不包含特殊符號, 標(biāo)點符號等等; 至少有一個字符 語法:isalnum() 參數(shù):無 返回值:是否全是數(shù)字或者字母, bool 類型 """ nameStr = "qinzy66888" print(nameStr.isalnum()) - isspace
""" 作用:字符串中是否所有的字符都是空白符; 包括空格, 縮進(jìn), 換行等不可見轉(zhuǎn)義符; 至少有一個字符 語法:isspace() 參數(shù):無 返回值:是否全是空白符, bool 類型 """ nameStr = "\n" print(nameStr.isspace()) - startswith
""" 作用:判定一個字符串是否以某個前綴開頭 語法:startswith(prefix, start=0, end=len(str)) 參數(shù):prefix, 需要判定的前綴字符串; start, 判定起始位置; end, 判定結(jié)束位置 返回值:是否以指定前綴開頭, bool, 類型 """ dateStr = "2020-04-17: 述職報考.xls" print(dateStr.startswith("04", 5, 7)) - endswith
""" 作用:判定一個字符串是否以某個后綴結(jié)尾 語法:endswith(suffix, start=0, end=len(str)) 參數(shù):suffix, 需要判定的后綴字符串; start, 判定起始位置; end, 判定結(jié)束位置 返回值:是否以指定后綴結(jié)尾, bool 類型 """ dateStr = "2020-04-17: 述職報考.xls" print(dateStr.endswith(".xls")) - in
""" 語句:判定一個字符串, 是否被另外一個字符串包含 """ name = "coder qin" nameStr = "coder qin zy" print(name in nameStr) - not in
""" 語句:判定一個字符串, 是否沒有被另外一個字符串包含 """ name = "coder qin tt" nameStr = "coder qin zy" print(name not in nameStr)
- isalpha
- 字符串拼接