常用數(shù)據(jù)類型操作(二)

字符串


  • 概念:有序的 不可變的 字符集合

  • 形式

    • 轉(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)
        
    • 替代轉(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)
        
    • 填充壓縮
      • 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 + "|")
        
    • 分割拼接
      • 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)
        
    • 判定真假
      • 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)
        

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容