溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python字符串常規(guī)操作方法有哪些

發(fā)布時(shí)間:2022-04-06 11:21:09 來(lái)源:億速云 閱讀:209 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“Python字符串常規(guī)操作方法有哪些”,在日常操作中,相信很多人在Python字符串常規(guī)操作方法有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)ython字符串常規(guī)操作方法有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

一、前言

在Python開(kāi)發(fā)的過(guò)程中,為了實(shí)現(xiàn)某項(xiàng)功能,經(jīng)常需要對(duì)某些字符串進(jìn)行特殊的處理,如拼接字符串、截取字符串、格式化字符串等。

二、拼接字符串

在使用“+”運(yùn)算符可完成對(duì)多個(gè)字符串的拼接,“+”運(yùn)算符可以連接多個(gè)字符串并產(chǎn)生一個(gè)字符串對(duì)象。

例如,定義兩個(gè)字符串,一個(gè)保存英文版的名言,另一個(gè)用于保存中文版的名言,然后使用“+”運(yùn)算符進(jìn)行拼接,代碼如下:

mot_en = "Rememberance is a form meeting. Frgetfulness is a form of freedom"
mot_cn = "記憶是一個(gè)相遇。遺忘是一種自由。"
print(mot_en + "-" + mot_cn)

  運(yùn)行結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

字符串不允許與其他類(lèi)型的數(shù)據(jù)拼接,例如,使用下面代碼,字符串與數(shù)值相拼接,將產(chǎn)生異常。

str1 = "今天一共走了"
num = 23456
str2 = "步"

print(str1 + num + str2)

Python字符串常規(guī)操作方法有哪些

解決該問(wèn)題,可以將整個(gè)數(shù)轉(zhuǎn)換為字符串。將正數(shù)轉(zhuǎn)換為字符串可以用str()函數(shù)。修改后的代碼如下:

str1 = "今天一共走了"
num = 23456
str2 = "步"

print(str1 + str(num) + str2)

運(yùn)行上面代碼,結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

三、計(jì)算字符串的長(zhǎng)度

  由于不同的字符串所占字節(jié)不同,所以要計(jì)算字符串的長(zhǎng)度,需要先了解個(gè)字符串所占的字節(jié)數(shù)。在Python中,數(shù)字、英文、小數(shù)點(diǎn)、下劃線(xiàn)和空格占一個(gè)字節(jié);一個(gè)漢字可以會(huì)占2~4個(gè)字節(jié),占幾個(gè)字節(jié)取決于采用的編碼。

在Python中,提供了len()函數(shù)計(jì)算字符串的長(zhǎng)度。語(yǔ)法格式如下:

len(str)

其中,string用于指定要統(tǒng)計(jì)的字符串。

例如:定義一個(gè)字符串,內(nèi)容為“人生苦短,我用Python”,然后用len()函數(shù)計(jì)算該字符串的長(zhǎng)度,代碼如下:

str1 = "人生苦短,我用Python"  # 定義字符串

string = len(str1)  # 計(jì)算字符串長(zhǎng)度

print(string)

執(zhí)行上述代碼顯示為“13”

Python字符串常規(guī)操作方法有哪些

在實(shí)際開(kāi)發(fā)時(shí),有時(shí)需要獲取字符串所占的字節(jié)數(shù),即如果采用UTF-8編碼,漢字占3個(gè)字節(jié),采用GBK或者GB2312時(shí),漢字占兩個(gè)字節(jié),可以使用encode()方法進(jìn)行編碼后再進(jìn)行獲取。

str1 = "人生苦短,我用Python"  # 定義字符串

string = len(str1.encode())  # 計(jì)算UTF-8編碼字符串的長(zhǎng)度

print(string)

運(yùn)行代碼結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

如果要獲取采用GBK編碼的字符串的長(zhǎng)度,可以使用下列代碼:

str1 = "人生苦短,我用Python"  # 定義字符串

string = len(str1.encode("gbk"))  # 計(jì)算GBK編碼字符串的長(zhǎng)度

print(string)

運(yùn)行代碼結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

四、截取字符串

由于字符串也屬于序列,所以要截取字符串,可以采取切片來(lái)實(shí)現(xiàn)。通過(guò)切片的方式截取字符串的語(yǔ)法格式如下:

string[start : end : step]

參數(shù)說(shuō)明:

  • string:表示要截取的字符串

  • start:表示要截取的第一個(gè)字符的索引(包括該字符),如果不指定,則默認(rèn)為“0”

  • end:示要截取的后一個(gè)字符的索引(不包括該字符),如果不指定,則默認(rèn)為字符串的長(zhǎng)度

  • step:表示切片的步長(zhǎng),如果省略,則默認(rèn)為“1”,當(dāng)省略步長(zhǎng)時(shí),最后一個(gè)冒號(hào)可以省略

定義一個(gè)字符,然后截取不同長(zhǎng)度的子字符,代碼如下:

str1 = "人生苦短,我用Python"  # 原生字符串
substr1 = str1[1]  # 截取第2字符
substr2 = str1[5:]  # 從第6字符截取
substr3 = str1[:5]  # 從左邊數(shù)截取5個(gè)字符
substr4 = str1[2:5]  # 截取第3到第5個(gè)字符

print("原生字符串", str1)
print(substr1 + "\n" + substr2 + "\n" + substr3 + "\n" + substr4)

運(yùn)行結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

在進(jìn)行字符串截取的時(shí)候,如果指定的索引不存在,則會(huì)拋出異常,如下圖所示:

Python字符串常規(guī)操作方法有哪些

要解決該問(wèn)題,可以使用try…except語(yǔ)句拋出異常,代碼如下:

str1 = "人生苦短,我用Python"  # 原生字符串
try:
    sbustr1 = str1[15]
except IndexError:
    print("指定索引不存在")

運(yùn)行結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

五、分隔字符串

在Python中,字符串對(duì)象提供了分隔字符串的方法,分隔字符串是把字符串分隔為列表。

字符串對(duì)象的split()方法可以實(shí)現(xiàn)分割,split()方法的語(yǔ)法格式如下:

str.split(sep,maxsplit)

參數(shù)說(shuō)明:

  • str:表示要進(jìn)行分割的字符串。

  • sep:用于指定分割符,可以包含多個(gè)字符,默認(rèn)為None,即所有空字符(包括空格、換行“\n”、制表符“\t”等)

  • maxsplit:可選參數(shù),用于指定分割的次數(shù),如果不指定或者為-1,則分割次數(shù)沒(méi)有限制,否則返回結(jié)果列表的元素個(gè)數(shù)最多為maxsplit+1

  • 返回值:分隔后的字符串列表

說(shuō)明:在split方法中,如果不指定sep參數(shù),那么也不能指定maxsplit參數(shù)。

例如:定義一個(gè)百度網(wǎng)址的字符串,然后用split()方法根據(jù)不同的分隔符進(jìn)行分割,代碼如下:

str1 = "百 度 網(wǎng) 址 >>> https://www.baidu.com/"  #
print("原字符串", str1)
list1 = str1.split()  # 采用默認(rèn)分隔符分割
list2 = str1.split(">>>")  # 采用多個(gè)分隔符分割
list3 = str1.split(".")  # 采用“.”進(jìn)行分割
list4 = str1.split(" ", 4)  # 采用空格進(jìn)行分割,并且只分割前四個(gè)

print(str(list1) + "\n" + str(list2) + "\n" + str(list3) + "\n" + str(list4))

運(yùn)行結(jié)果如下:

Python字符串常規(guī)操作方法有哪些

六、檢索字符串

在Python中,字符串對(duì)象提供了很多應(yīng)用于字符串查找的方法,這里主要介紹以下幾種:

1.count()方法

檢索指定字符串在列外一個(gè)字符串中出現(xiàn)的次數(shù)檢索對(duì)象不存在,怎返回0,否則返回出現(xiàn)的次數(shù),其語(yǔ)法如下:

str.count(sub[, start[,end]])

參數(shù)說(shuō)明:

  • str:表示原字符串

  • sub:表示要檢索的子字符串

  • start:可選參數(shù),表示檢索范圍的起始位置的索引,如不指定,默認(rèn)從頭檢索

  • end:可選參數(shù),表示檢索范圍的結(jié)束位置的索引,如不指定,則檢索到結(jié)尾。

2.find()方法

該方法用于檢索是否包含指定的子字符串,檢索對(duì)象不存在,怎返回-1,否則返回首次出現(xiàn)的索引值,其語(yǔ)法如下:

str.findt(sub[, start[,end]])

參數(shù)說(shuō)明:

  • str:表示原字符串

  • sub:表示要檢索的子字符串

  • start:可選參數(shù),表示檢索范圍的起始位置的索引,如不指定,默認(rèn)從頭檢索

  • end:可選參數(shù),表示檢索范圍的結(jié)束位置的索引,如不指定,則檢索到結(jié)尾。

3.index()方法

index()方法同find()方法類(lèi)似,也是用于檢索是否包含指定的子字符串。只不過(guò)使用index()方法,當(dāng)指定的字符串不存在時(shí),會(huì)拋出異常,其語(yǔ)法格式如下:

str.index(sub[, start[,end]])

參數(shù)說(shuō)明:

  • str:表示原字符串

  • sub:表示要檢索的子字符串

  • start:可選參數(shù),表示檢索范圍的起始位置的索引,如不指定,默認(rèn)從頭檢索

  • end:可選參數(shù),表示檢索范圍的結(jié)束位置的索引,如不指定,則檢索到結(jié)尾。

4.startswith()方法

該方法用于檢索是否指定字符串開(kāi)頭。如果是則返回True,否則返回False。其語(yǔ)法格式如下:

str.startswith(prefix[, start[, end]])

參數(shù)說(shuō)明:

  • str:表示原字符串

  • prefix:表示要檢索的子字符串

  • start:可選參數(shù),表示檢索范圍的起始位置的索引,如不指定,默認(rèn)從頭檢索

  • end:可選參數(shù),表示檢索范圍的結(jié)束位置的索引,如不指定,則檢索到結(jié)尾。

5.endswith()方法

該方法用于檢索是否指定字符串結(jié)尾。如果是則返回True,否則返回False。其語(yǔ)法格式如下:

str.endswith(prefix[, start[, end]])

參數(shù)說(shuō)明:

  • str:表示原字符串

  • prefix:表示要檢索的子字符串

  • start:可選參數(shù),表示檢索范圍的起始位置的索引,如不指定,默認(rèn)從頭檢索

  • end:可選參數(shù),表示檢索范圍的結(jié)束位置的索引,如不指定,則檢索到結(jié)尾。

七、字母的大小寫(xiě)轉(zhuǎn)換

在Python中,字符串對(duì)象提供了lower()方法和upper()方法進(jìn)行字母大小寫(xiě)轉(zhuǎn)換。

1.lower()方法

將字符串中大寫(xiě)字母轉(zhuǎn)換為小寫(xiě),其語(yǔ)法如下:

str.lower()

2.upper()方法

將字符串中小寫(xiě)字母轉(zhuǎn)換為大寫(xiě),其語(yǔ)法如下:

str.upper()

八、去除字符串中的空格和特殊字符

這里的特殊字符是指制表符“\t”、回車(chē)符“\r”、換行符“\n”等。

1.strip()方法

strip()方法用于去除字符串左、右兩側(cè)的空格和特殊字符,語(yǔ)法如下:

str.strip([chars])

參數(shù)說(shuō)明:

  • str:表示要去除空格字符串

  • chars:可選參數(shù),用于指定要去除的字符,可以指定多個(gè),如果設(shè)置chars為“@.”,則去除左右側(cè)包括的“@”或“.”,如不知定,則默認(rèn)去除制表符“\t”、回車(chē)符“\r”、換行符“\n”等。

2.lstrip()方法

lstrip()方法用于去除左側(cè)的空格和特殊字符,語(yǔ)法格式如下:

str.lstrip([chars])

參數(shù)說(shuō)明:

  • str:表示要去除空格字符串

  • chars:可選參數(shù),用于指定要去除的字符,可以指定多個(gè),如果設(shè)置chars為“@.”,則去除左側(cè)包括的“@”或“.”,如不知定,則默認(rèn)去除制表符“\t”、回車(chē)符“\r”、換行符“\n”等。

3.rstrip()方法

rstrip()方法用于去除右側(cè)的空格和特殊字符,語(yǔ)法格式如下:

str.rstrip([chars])

參數(shù)說(shuō)明:

  • str:表示要去除空格字符串

  • chars:可選參數(shù),用于指定要去除的字符,可以指定多個(gè),如果設(shè)置chars為“@.”,則去除右側(cè)包括的“@”或“.”,如不知定,則默認(rèn)去除制表符“\t”、回車(chē)符“\r”、換行符“\n”等。

九、格式化字符串

Python 的字符串格式化有兩種方式: “% ”操作符方式,字符串對(duì)象的format() 方法

1.使用“ %”操作符

【1】 % 格式化方式

%[(name)][flags][width].[precision]typecode

    (name): 可選,用于選擇指定的key
    flags: 可選,可供選擇的值有:
        +: 右對(duì)齊;正數(shù)前加正好,負(fù)數(shù)前加負(fù)號(hào);
        -: 左對(duì)齊;正數(shù)前無(wú)符號(hào),負(fù)數(shù)前加負(fù)號(hào);
         : 右對(duì)齊;正數(shù)前加空格,負(fù)數(shù)前加負(fù)號(hào);
        0: 右對(duì)齊;正數(shù)前無(wú)符號(hào),負(fù)數(shù)前加負(fù)號(hào);用 0 填充空白處
    width: 可選,占有寬度
    .precision: 可選,小數(shù)點(diǎn)后保留的位數(shù)
    typecode: 必選
        s,獲取傳入對(duì)象的 __str__ 方法的返回值,并將其格式化到指定位置
        r,獲取傳入對(duì)象的 __repr__ 方法的返回值,并將其格式化到指定位置
        c,整數(shù):將數(shù)字轉(zhuǎn)換成其 unicode 對(duì)應(yīng)的值,10進(jìn)制范圍為 0 <= i <= 1114111(py27則只支持 0-255);字符:將字符添加到指定位置
        o,將整數(shù)轉(zhuǎn)換成八進(jìn)制表示,并將其格式化到指定位置
        x,將整數(shù)轉(zhuǎn)換成十六進(jìn)制表示,并將其格式化到指定位置
        d,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成十進(jìn)制表示,并將其格式化到指定位置
        e,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并將其格式化到指定位置(小寫(xiě) e )
        E,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并將其格式化到指定位置(大寫(xiě) E )
        f,將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)表示,并將其格式化到指定位置(默認(rèn)保留小數(shù)點(diǎn)后6位)
        F,同上
        g,自動(dòng)調(diào)整將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成 浮點(diǎn)型或科學(xué)計(jì)數(shù)法表示(超過(guò)6位數(shù)用科學(xué)計(jì)數(shù)法),并將其格式化到指定位置(如果是科學(xué)計(jì)數(shù)則是 e;)
        G,自動(dòng)調(diào)整將整數(shù)、浮點(diǎn)數(shù)轉(zhuǎn)換成 浮點(diǎn)型或科學(xué)計(jì)數(shù)法表示(超過(guò)6位數(shù)用科學(xué)計(jì)數(shù)法),并將其格式化到指定位置(如果是科學(xué)計(jì)數(shù)則是 E;)
        %,當(dāng)字符串中存在格式化標(biāo)志時(shí),需要用 %% 表示一個(gè)百分號(hào)

【2】% 格式化方式例子

[[fill]align][sign][#][0][width][,][.precision][type]

        fill: 【可選】空白處填充的字符
        align:【可選】對(duì)齊方式(需配合width使用)
            <: 內(nèi)容左對(duì)齊
            >: 內(nèi)容右對(duì)齊(默認(rèn))
            =: 內(nèi)容右對(duì)齊,將符號(hào)放置在填充字符的左側(cè),且只對(duì)數(shù)字類(lèi)型有效。 即使:符號(hào) + 填充物 + 數(shù)字
            ^: 內(nèi)容居中
        sign: 【可選】有無(wú)符號(hào)數(shù)字
            +: 正號(hào)加正,負(fù)號(hào)加負(fù);
            -: 正號(hào)不變,負(fù)號(hào)加負(fù);
            空格: 正號(hào)空格,負(fù)號(hào)加負(fù);
        #:【可選】對(duì)于二進(jìn)制、八進(jìn)制、十六進(jìn)制,如果加上 #,會(huì)顯示 0b/0o/0x,否則不顯示
        ,: 【可選】為數(shù)字添加分隔符,如:1,000,000
        width: 【可選】格式化位所占寬度
        .precision: 【可選】小數(shù)位保留精度
        type: 【可選】格式化類(lèi)型
            傳入” 字符串類(lèi)型 “的參數(shù)
                s: 格式化字符串類(lèi)型數(shù)據(jù)
                空白: 未指定類(lèi)型,則默認(rèn)是 None,同 s
            傳入“ 整數(shù)類(lèi)型 ”的參數(shù)
                b: 將十進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成二進(jìn)制表示然后格式化
                c: 將十進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換為其對(duì)應(yīng)的 unicode 字符
                d: 十進(jìn)制整數(shù)
                o: 將十進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成8進(jìn)制表示然后格式化;
                x: 將十進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成16進(jìn)制表示然后格式化(小寫(xiě) x )
                X: 將十進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成16進(jìn)制表示然后格式化(大寫(xiě) X )
            傳入“ 浮點(diǎn)型或小數(shù)類(lèi)型 ”的參數(shù)
                e: 轉(zhuǎn)換為科學(xué)計(jì)數(shù)法(小寫(xiě) e )表示,然后格式化;
                E: 轉(zhuǎn)換為科學(xué)計(jì)數(shù)法(大寫(xiě) E )表示,然后格式化;
                f: 轉(zhuǎn)換為浮點(diǎn)型(默認(rèn)小數(shù)點(diǎn)后保留 6 位)表示,然后格式化;
                F: 轉(zhuǎn)換為浮點(diǎn)型(默認(rèn)小數(shù)點(diǎn)后保留 6 位)表示,然后格式化;
                g: 自動(dòng)在e和f中切換
                G: 自動(dòng)在E和F中切換
                %: 顯示百分比(默認(rèn)顯示小數(shù)點(diǎn)后 6 位)

2.字符串對(duì)象的format() 方法

【1】 format 格式化方式

# 字符串格式化

print("I am %s, %d years old." % ("Y", 18))
print("I am %s, %s years old." % ("Y", 18))
print("I am %s, %s years old." % ("Y", ["18"]))
print("I am %s, %s years old." % ("Y", (18,)))

# 保留
print("percent %0.2f%%." % 23.36666)
# 截取
print("percent %.5s." % 23.36666)

# 字典形式
print("I am %(name)s, %(age)d years old." % {"name": "Y", "age": 18})

# 其他
print("I am \033[42;1m%(name)10s\033[0m, "
      "\033[42;1m%(age)-10d\033[0m years old."
      % {"name": "Y", "age": 18})

print("user", "root", "password", "root", sep=":")

運(yùn)行結(jié)果:

Python字符串常規(guī)操作方法有哪些

&emsp;&ensp;【2】format 格式化方式例子

# format 格式
print("I am {}, {} years old, who is {}.".format("Y", "22", "wise"))
print("I am {0}, {1} years old, who is {2}.".format("Y", "22", "wise"))
print("I am {1}, {1} years old, who is {1}.".format("Y", "22", "wise"))

print("I am {name}, {age} years old, who is {adj}.".format(name="Y", age="22", adj="wise"))
print("I am {name}, {age} years old, who is {adj}.".format(**{"name": "Y", "age": "22", "adj": "wise"}))

print("I am {0[0]}, {0[1]} years old, who is {0[2]}.".format(["Y", "22", "wise"], [1, 2, 3]))
print("I am {:s}, {:d} years old, who is {:f}.".format("good", 122, 12.22))
print("I am {:s}, {:d} years old, who is {:f}.".format(*["good", 122, 12.22]))

# 進(jìn)制,百分比
print("number: {:b}, {:o}, {:d}, {:x}, {:X}, {:0.2%}".format(12, 15, 17, 999, 999, 0.55))

運(yùn)行結(jié)果:

Python字符串常規(guī)操作方法有哪些

到此,關(guān)于“Python字符串常規(guī)操作方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI