日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

7.python字符串-内置方法分析

發(fā)布時(shí)間:2024/4/14 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.python字符串-内置方法分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  上篇對(duì)python中的字符串內(nèi)置方法進(jìn)行了列舉和簡(jiǎn)單說明,但這些方法太多,逐一背下效率實(shí)在太低,下面我來對(duì)這些方法按照其功能進(jìn)行總結(jié):

1.字母大小寫相關(guān)(中文無(wú)效)

  1.1?S.upper() -> string?

    返回一個(gè)字母全部大寫的副本

  1.2 S.lower() -> string?

    返回一個(gè)字母全是小寫的副本

  1.3?S.swapcase() -> string?

    返回一個(gè)字母大小寫轉(zhuǎn)換后的副本

  1.4?S.title() -> string?

    將單詞的首字母大寫,即為所謂的標(biāo)題

    方框里是中文的編碼,可以發(fā)現(xiàn) s 還是大寫了,說明會(huì)無(wú)視其他類型的字符,找到英文單詞就將其首字母大寫

  1.6?S.capitalize() -> string?

    將字符串的首字母大寫,要注意不是所有單詞,注意和上面的區(qū)別

    而且當(dāng)字符串的首字符不是字母的時(shí)候是無(wú)效的

?

  1.5 S.isupper() -> bool?

    判斷字符串內(nèi)的字母是否全是大寫,字符串中必須要有字母,返回布爾值

    和其他字符混合時(shí)情況如下

    會(huì)無(wú)視其他字符,只對(duì)字母進(jìn)行判斷

  1.6 S.islower() -> bool?

    判斷字符串內(nèi)的字母是否全是小寫,字符串中必須要有字母,返回布爾值

    和大寫判斷是相對(duì)應(yīng)的,這里不繼續(xù)舉例了。

  1.7?S.istitle() -> bool?

    判斷字符串是否符合標(biāo)題格式,返回布爾值,關(guān)于python字符串中何為標(biāo)題上面也是詳細(xì)介紹了,這里不多說。

?


?

?

2.字符串組成字符判斷

  字符串內(nèi)的字符除了是英文字母之外,還可以有其他字符,有一些方法可以對(duì)字符串的組成字符進(jìn)行判斷

  2.1?S.isalpha() -> bool?

    判斷字符串是否全是由字母組成,返回布爾值

    

    只有是全字母才行,有數(shù)字和中文等都不行

  2.2 S.isdigit() -> bool?

    判斷字符串是否全是由數(shù)字組成,返回布爾值

    和上面類似,不多說明

  2.3 ?S.isalnum() -> bool?

    判斷字符串是否全是由字母和數(shù)字組成,返回布爾值

    是上面兩種判斷的合并

  2.4 ?S.isspace() -> bool?

    判斷字符串是否都是由空字符組成,返回布爾值

  

    空字符不意味著字符串為空,如空格,\n 等特殊字符都算是空字符


?

?

3.字符串是否是以某特定字符開頭或結(jié)尾的判斷

  3.1 ?S.startswith(prefix[, start[, end]]) -> bool?

    判斷是否是以某特定字符開頭,返回布爾值

    默認(rèn)是從第一個(gè)字符開始,也就是索引值為0開始,可以用索引來指定對(duì)某個(gè)范圍的字符進(jìn)行判斷

  3.2?S.endswith(suffix[, start[, end]]) -> bool?

    判斷是否是以某特定字符結(jié)尾,返回布爾值

    和上面類似,不多解釋


?

關(guān)于字符串中帶判斷的就是這么多,下面總結(jié)一下究竟可以判斷什么:

  1.字符串里的字母是否全是小寫或大寫

  2.字符串是否符合標(biāo)題格式的判斷

  3.字符串的組成是否是全字母,全數(shù)字,或全是字母和數(shù)字,或者全是空字符

  4.字符串是否是以給定的字符開頭或結(jié)尾

?


?

4.在字符串內(nèi)尋找給定字符

  4.1?S.find(sub [,start [,end]]) -> int?

    在原字符串內(nèi)尋找給定的字符,找到了的第一個(gè),返回其索引值,沒找到返回-1

  注意是從左向右尋找,找到的第一個(gè),像這里的 o ,在原字符串有多個(gè),但只返回了第一個(gè)的索引值,另外當(dāng)給的字符不只一個(gè)時(shí),按給的字符串的第一個(gè)字符作為基準(zhǔn)點(diǎn),如這里的 co 返回的就是 c 的索引值。當(dāng)然可以指定范圍,但指定范圍其并不意味會(huì)重新計(jì)算索引值,得到的依然是相對(duì)于整個(gè)字符串的索引。

  4.2?S.rfind(sub [,start [,end]]) -> int?

    與上面的相同,只不過是從右往左尋找。

?

  4.3? S.index(sub [,start [,end]]) -> int?

?    和 find() 方法基本一樣,只不過?find() 找不到時(shí)返回的是-1,而 index() 找不到是會(huì)報(bào)錯(cuò)。

  4.4?S.rindex(sub [,start [,end]]) -> int?

    同理,這個(gè)是從右往左找

?


?

5.字符串出現(xiàn)的計(jì)數(shù)

  和尋找類似,不過上面介紹的尋找的方法都只是找到第一個(gè),如果我想知道某個(gè)特定的字符串在原字符中出現(xiàn)了多少次的時(shí)候怎么辦,就可以使用計(jì)數(shù)了。

  5.1 S.count(sub[, start[, end]]) -> int?

?  

?

    這個(gè)方法會(huì)找到范圍內(nèi)所有指定的子字符串,返回其出現(xiàn)的次數(shù),沒找到的話則返回0


?

?

6.字符的替換

  注意,雖然說是替換,但原字符串是不可變的,我在上篇也說過,字符串的所有方法都沒有改變?cè)址旧?#xff0c;都是返回了一個(gè)新的對(duì)象。

  所謂的替換,只是針對(duì)于返回對(duì)象的效果而已。

  5.1 S.replace(old, new[, count]) -> string?

  

  

  可以看出原字符串本身是不變的,只是返回了一個(gè)新對(duì)象,這個(gè)對(duì)象在內(nèi)存之中,如果后面要有利用這個(gè)新對(duì)象的話,可以將其賦值給變量,當(dāng)然也可以當(dāng)做函數(shù)的參數(shù)直接傳參,但傳參的時(shí)候要注意數(shù)據(jù)類型。

  其中,count 指定要替換的次數(shù),不指定則全部替換

?


?

7.字符串中的對(duì)齊和填充等

  這里的操作類似于在world中編輯文字,所以可以聯(lián)想理解。

  7.1?S.ljust(width[, fillchar]) -> string?

?    左對(duì)齊

   ? 首先要體現(xiàn)對(duì)齊的效果要有一個(gè)前提,那就是那一行不能是滿的,否則無(wú)論怎么對(duì)齊也沒有用,而在python中,一個(gè)字符串對(duì)象默認(rèn)就是占滿一行的,其行寬就是字符串是長(zhǎng)度。

   ? 但是,當(dāng)我強(qiáng)制聲明這一行的寬度是多少,而這個(gè)寬度(width)大于原字符串的長(zhǎng)度(小于無(wú)效,但不會(huì)報(bào)錯(cuò)),此時(shí)對(duì)齊就有效果了。

    

?   ? 為了體現(xiàn)效果我將光標(biāo)放上去了,否則都是空格看不出來。

    我們將一行的寬度設(shè)置為15,而原字符串我用?len()內(nèi)置函數(shù)得出其長(zhǎng)度,可以知道原字符串長(zhǎng)度為11。當(dāng)我指定一行長(zhǎng)為15,并設(shè)置左對(duì)齊,右邊的多出來的位置就默認(rèn)用空格填充了,當(dāng)然我們也可以指定用什么填充(fillchar),但只能是字符串類型。

    注意,只能用一個(gè)字符,且不能用中文。

?

  7.2 ?S.rjust(width[, fillchar]) -> string?

    右對(duì)齊,原理同上

  7.3 ?S.center(width[, fillchar]) -> string?

    居中對(duì)齊,原理也一樣,但是這里指定的寬度是兩邊的和,且多出來的位置無(wú)法平均分配到兩邊的話會(huì)優(yōu)先給右邊

    設(shè)置為15時(shí),多出來的位置是15-11=4,可以平均分到兩邊去,每邊都是4/2=2個(gè)位置,但設(shè)置為16時(shí),16-11=5,5個(gè)位置無(wú)法平均分配,此時(shí)優(yōu)先給右邊多一個(gè)。

  7.4?S.zfill(width) -> string?

    快捷的填充方式,只不過只能是右對(duì)齊,且填充的內(nèi)容為 0

?

  7.5 S.strip([chars]) -> string or unicode?

    除了填充外,我們還可以反填充,這個(gè)方法是去掉格式類似于填充后的字符串內(nèi)的填充內(nèi)容的。

    但是,這并不意味著我們要使用了對(duì)齊填充方法以后才能用,只有格式符合就可以。

    默認(rèn)是去除兩邊的空格,不過要注意,中間的空格是不去除的

    當(dāng)然,我們還可以指定去除的字符

    只要填充內(nèi)容是一樣的,指定填充字符的時(shí)候用幾個(gè)都無(wú)所謂,就算超過原字符串中的填充字符也可以。

  7.6 S.lstrip([chars]) -> string or unicode?

    和上面的類似,不過這個(gè)只去除左邊的填充內(nèi)容

  7.7 S.rstrip([chars]) -> string or unicode?

    同類,只去除右邊的


?

8.字符串的分隔

  字符串的分隔是用過給定的標(biāo)記進(jìn)行分隔后,返回一個(gè)由被分隔后的字符串組成的新對(duì)象,就像切菜一樣,畫好標(biāo)記,手起刀落,菜就分成了幾段了。

  8.1?S.split([sep [,maxsplit]]) -> list of strings?

  方法返回的是一個(gè)列表對(duì)象,seq就是給定的字符串,maxsplit 表示分隔的最大次數(shù),默認(rèn)只要出現(xiàn)給定的分隔字符串都會(huì)進(jìn)行分隔。

  其中有一些很奇怪的行為特性,當(dāng)兩個(gè)分隔字符相鄰時(shí),列表的對(duì)應(yīng)位置會(huì)出空字符串元素,最大次數(shù)為0時(shí)不分隔,分隔字符在字符串的最后時(shí)也會(huì)出現(xiàn)空字符串。

  另外,分隔是從左向右的,是全部分隔,方向倒是不重要,結(jié)果是一樣的,但如果指定了最大次數(shù),那就有意義了,因?yàn)榉指舸螖?shù)的計(jì)算是從左向右的。

  8.2?S.rsplit([sep [,maxsplit]]) -> list of strings?

  同上,只不過分隔方向是從右向左

  8.3?S.splitlines(keepends=False) -> list of strings?

  按照換行符分隔,注意linux中的換行符為 \n ,windows中的換行符為 \r \n

  上面的分隔方式都要一個(gè)特點(diǎn),那就是指定的分隔字符是不會(huì)出現(xiàn)到分隔后的結(jié)果中的

  8.4 ?S.partition(sep) -> (head, sep, tail)?

  和上面的分隔方法相比,這種分隔方法返回的是一個(gè)元祖對(duì)象,且分隔次數(shù)只有一次,另外被按照('分隔字符之前','指定的分隔字符','分隔字符之后')排序

 

  另外,也是找到的第一個(gè),是從左向右找的。

  8.5?S.rpartition(sep) -> (head, sep, tail)?

  同上,不過是從右往左找。

?


?

9.特殊字符轉(zhuǎn)義

  9.1?S.expandtabs([tabsize]) -> string?

   將制表符(\r )換成空格,默認(rèn)一個(gè)制表符轉(zhuǎn)換8個(gè)空格,可以用 tabsize 指定轉(zhuǎn)換空格的個(gè)數(shù)

?


?

10.字符串編碼

  10.1?S.decode([encoding[,errors]]) -> object?

  解碼

  10.2?S.encode([encoding[,errors]]) -> object?

  編碼

  編解碼問題會(huì)在文件操作中細(xì)講


11.字符串拼接

  11.1?S.join(iterable) -> string?

  前面的博文詳細(xì)講過,這里不再重復(fù)


12.字符串格式化

  12.1 % 運(yùn)算符

  前面的博文詳細(xì)講過,這里不再重復(fù)

  12.2 ?S.format(*args, **kwargs) -> string?

  % 格式化的升級(jí)版,一般% 就夠用了,所以我也沒怎么了解過,這里就不亂說了。

?

?


13.字符串過濾

  13.1?S.translate(table [,deletechars]) -> string?

  根據(jù)參數(shù)table給出的表(翻譯表,翻譯表是通過maketrans方法轉(zhuǎn)換而來)轉(zhuǎn)換字符串的字符, 要過濾掉的字符放到 del 參數(shù)中。

  個(gè)人也沒用過,以后有機(jī)會(huì)就進(jìn)行補(bǔ)充。

?


?

  更多的參考資料:戳這里

?

轉(zhuǎn)載于:https://www.cnblogs.com/scolia/p/5532712.html

總結(jié)

以上是生活随笔為你收集整理的7.python字符串-内置方法分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。