一、前言 字符串處理是每一門(mén)編程語(yǔ)言的基本功,。我總結(jié)了一下字符串常用的處理方法,。 python由于早期專門(mén)編寫(xiě)了一個(gè)string模塊,后面又整合到字符串對(duì)象中,。所以python字符串處理有兩種:一種是直接處理,,一種是導(dǎo)入string模塊處理。為了向后兼容,,python一直保留著string模塊,。 為了方便,先聲明一下,。 以下已經(jīng)用 import string 導(dǎo)入string模塊; 用變量str代表字符串變量或字符串,; 三個(gè)>代表在控制臺(tái)輸入,。 我整理了一個(gè)目錄,可以直接點(diǎn)擊跳轉(zhuǎn),。 二,、字符串截取 這個(gè)字符串截取在python相當(dāng)方便,因?yàn)閜ython有切片器這個(gè)神奇的東西,,而且字符串實(shí)際是一個(gè)字符數(shù)組,。注意切片器是從0開(kāi)始的,需要兩個(gè)參數(shù)指定起始位置(類似于C#或Java的substring方法),,其中l(wèi)en函數(shù)是獲取字符串的長(zhǎng)度,。 1、左截取3個(gè)字符:str[:3] 2,、右截取3個(gè)字符:str[len(str)-3:] 3,、從中間第2個(gè)字符開(kāi)始截取3個(gè)字符:str[1:4] 三、字符串格式化 這個(gè)字符串格式化也是相當(dāng)重要的一個(gè)功能,。python中用%s和元組來(lái)搭配使用,。例如: >>>"你好,我是%s,。來(lái)自%s" % ('楊仕航','地球') 可以得到輸出'你好,,我是楊仕航。來(lái)自地球' 當(dāng)然,,還有其他格式化符號(hào),,這個(gè)比較簡(jiǎn)單。大家可以百度搜索一下。我一般會(huì)偷懶直接用%s萬(wàn)能代替,。 四,、字符串填充 其實(shí)字符串填充是把不足位數(shù)的用指定字符填充進(jìn)去。嚴(yán)格來(lái)說(shuō),,也可以歸入到格式化里面,。為了系統(tǒng)化,我還是單獨(dú)把這一部分獨(dú)立出來(lái),。 這個(gè)有4個(gè)方法:center,、ljust、rjust,、zfill,,使用如下 >>>"abc".center(5,'-') #用-填充,中間填充 '-abc-' >>>"abc".ljust(5,'-') #用-填充,,左邊填充 'abc--' >>>"abc".rjust(5,'-') #用-填充,,右邊填充 '--abc' >>>"abc".zfill(5) #0值填充,右邊填充 '00abc' 五,、字母大小寫(xiě)轉(zhuǎn)換 字母大小寫(xiě)轉(zhuǎn)換個(gè)人用得比較少,,因?yàn)槠匠:苌偬幚碛⑽南嚓P(guān)東西。這部分一共有5個(gè)方法,。 1,、str.lower() #把字母轉(zhuǎn)成小寫(xiě) 2、str.upper() #把字母轉(zhuǎn)成大寫(xiě) 3,、str.swapcase() #大小寫(xiě)互換 4,、str.capitalize() #句子首字母大寫(xiě) 5、str.title() #每個(gè)單詞首字母大寫(xiě) 最后這個(gè)titile方法,,string模塊也有一個(gè)方法對(duì)應(yīng) string.capwords(str) 六,、字符串判斷 有時(shí)候,判斷字符串類型總是難免的,。下面這些方法都是返回布爾值,。 1、str.isalpha() #是否全是字母,,并至少有一個(gè)字符 2,、str.isdigit() #是否全是數(shù)字,并至少有一個(gè)字符 3,、str.isspace() #是否全是空白字符,,并至少有一個(gè)字符 4、str.islower() #字母是否全是小寫(xiě) 5,、str.isupper() #字母是否便是大寫(xiě) 6,、str.istitle() #是否是首字母大寫(xiě)的 7,、str.startwith(prefix[,start[,end]]) #是否以prefix開(kāi)頭 8、str.endwith(suffix[,start[,end]]) #以suffix結(jié)尾 但更多是時(shí)候只是判斷某個(gè)字符串是否包含某個(gè)字符,。這個(gè)可以用in方法判斷,,例如判斷'123'是否包含'3' >>>'3' in '123' True 也就是說(shuō),我們可以用一串字符串去判斷,,例如數(shù)字我就寫(xiě)'0123456789',。 當(dāng)然,這些不需要我們傻傻地一個(gè)一個(gè)去寫(xiě),。string模塊已經(jīng)提供好一些常量了,。看下一個(gè)部分內(nèi)容,。 七,、string模塊常量 string.digits #數(shù)字0~9 string.letters #所有字母(大小寫(xiě)) string.lowercase #所有小寫(xiě)字母 string.printable #可打印字符的字符串 string.punctuation #所有標(biāo)點(diǎn) string.uppercase #所有大寫(xiě)字母 這些大家可以在控制臺(tái)直接輸出看看是什么東西。 八,、字符串查找 只是判斷是否包含某些字符串還不夠,,有時(shí)候還需要知道具體位置。這個(gè)就涉及到字符串查找了,。 1,、str.find(substr, [start, [end]]) 返回str中出現(xiàn)substr的第一個(gè)字母的標(biāo)號(hào),如果str中沒(méi)有substr則返回-1,。start和end作用就相當(dāng)于在str[start:end]中搜索。 2,、str.rfind(substr, [start, [end]]) 返回str中最后出現(xiàn)的substr的第一個(gè)字母的標(biāo)號(hào),,如果str中沒(méi)有substr則返回-1,也就是說(shuō)從右邊算起的第一次出現(xiàn)的,。 3,、str.index(substr, [start, [end]]) 與find()相同,只是在str中沒(méi)有substr時(shí),,會(huì)返回一個(gè)運(yùn)行時(shí)錯(cuò)誤 4,、str.rindex(substr, [start, [end]]) 與rfind()相同,只是在str中沒(méi)有substr時(shí),,會(huì)返回一個(gè)運(yùn)行時(shí)錯(cuò)誤 5,、str.count(substr, [start, [end]]) #計(jì)算substr在str中出現(xiàn)的次數(shù) 九、字符串替換 1,、str.replace(oldstr, newstr, [count]) 把str中的oldstar替換為newstr,,count為替換次數(shù)。 2,、str.strip([chars]) 把str中左右兩邊包含chars中有的字符全部去掉,,可以理解為把str左右兩邊出現(xiàn)的chars替換為None 3,、str.lstrip([chars]) 把str中左邊包含chars中有的字符全部去掉,可以理解為把str左邊出現(xiàn)的chars替換為None 4,、str.rstrip([chars]) 把str中右邊包含chars中有的字符全部去掉,,可以理解為把str右邊出現(xiàn)的chars替換為None 5、str.expandtabs([tabsize]) 把str中的tab字符替換沒(méi)空格,,每個(gè)tab替換為tabsize個(gè)空格,,默認(rèn)是8個(gè) 十、字符串分割和組合 這個(gè)我用得比較多,,也是字符串處理除了正則表達(dá)式之外使用比較靈活的東西,。 1、str.split([sep, [maxsplit]]) 以sep為分隔符,,把S分成一個(gè)list,。maxsplit表示分割的次數(shù)。默認(rèn)的分割符為空白字符,。例如: >>>'123-34-45436'.split('-') ['123', '34', '45436'] 2,、str.rsplit([sep, [maxsplit]]) 這個(gè)和str.splitlines([keepends]) 效果一樣,都是把str按照行分割符分為一個(gè)list,,keepends是一個(gè)bool值,,如果為真每行后而會(huì)保留行分割符。例如: >>>'123\r234\n345'.rsplit() ['123', '234', '345'] 3,、str.join(seq) 把seq代表的序列──字符串序列,,用str連接起來(lái)。例如: >>>''.join(['df', '234', 'd4']) 'df234d4' >>>'-'.join(['df', '234', 'd4']) 'df-234-d4' 十一,、字符串轉(zhuǎn)數(shù)字 string模塊還包含相關(guān)字符串轉(zhuǎn)數(shù)字的方法,。如下 >>>string.atoi("123",10) #轉(zhuǎn)成十進(jìn)制 123 >>>string.atoi("A",16) #轉(zhuǎn)成十六進(jìn)制 10 >>>string.atof("123") #轉(zhuǎn)成浮點(diǎn)型數(shù)字 123.0 |
|
來(lái)自: 心靈地圖sxh > 《python編程》