Python中常用字串 函式

2021-06-22 10:10:12 字數 3909 閱讀 3791

python

有各種各樣的string操作函式。在歷史上string類在

python

中經歷了一段輪迴的歷史。在最開始的時候,

python

有乙個專門的string的module,要使用string的方法要先import,但後來由於眾多的

python

使用者的建議,從

python

2.0開始, string方法改為用s.method()的形式呼叫,只要s是乙個字串物件就可以這樣使用,而不用import。同時為了保持向後相容,現在的 

python

中仍然保留了乙個string的module,其中定義的方法與s.method()是相同的,這些方法都最後都指向了用s.method ()呼叫的函式。要注意,s.method()能呼叫的方法比string的module中的多,比如isdigit()、istitle()等就只能用 s.method()的方式呼叫。 

對乙個字串物件,首先想到的操作可能就是計算它有多少個字元組成,很容易想到用s.len(),但這是錯的,應該是len(s)。因為len()是內建函式,包括在__builtin__模組中。

python

不把len()包含在string型別中,乍看起來好像有點不可理解,其實一切有其合理的邏輯在裡頭。len()不僅可以計算字串中的字元數,還可以計算list的成員數,tuple的成員數等等,因此單單把len()算在string裡是不合適,因此一是可以把len()作為通用函式,用過載實現對不同型別的操作,還有就是可以在每種有len()運算的型別中都要包含乙個len()函式。 

python

選擇的是第一種解決辦法。類似的還有str(arg)函式,它把arg用string型別表示出來。 

字串中字元大小寫的變換: 

s.lower() #小寫 

s.upper() #大寫 

s.swapcase() #大小寫互換 

s.capitalize() #首字母大寫 

string.capwords(s) 

#這是模組中的方法。它把s用split()函式分開,然後用capitalize()把首字母變成大寫,最後用join()合併到一起 

s.title() #只有首字母大寫,其餘為小寫,模組中沒有這個方法 

字串在輸出時的對齊: 

s.ljust(width,[fillchar]) 

#輸出width個字元,s左對齊,不足部分用fillchar填充,預設的為空格。 

s.rjust(width,[fillchar]) #右對齊 

s.center(width, [fillchar]) #中間對齊 

s.zfill(width) #把s變成width長,並在右對齊,不足部分用0補足 

字串中的搜尋和替換: 

s.find(substr, [start, [end]]) 

#返回s中出現substr的第乙個字母的標號,如果s中沒有substr則返回-1。start和end作用就相當於在s[start:end]中搜尋 

s.index(substr, [start, [end]]) 

#與find()相同,只是在s中沒有substr時,會返回乙個執行時錯誤 

s.rfind(substr, [start, [end]]) 

#返回s中最後出現的substr的第乙個字母的標號,如果s中沒有substr則返回-1,也就是說從右邊算起的第一次出現的substr的首字母標號 

s.rindex(substr, [start, [end]]) 

s.count(substr, [start, [end]]) #計算substr在s中出現的次數 

s.replace(oldstr, newstr, [count]) 

#把s中的oldstar替換為newstr,count為替換次數。這是替換的通用形式,還有一些函式進行特殊字元的替換 

s.strip([chars]) 

#把s中前後chars中有的字元全部去掉,可以理解為把s前後chars替換為none 

s.lstrip([chars]) 

s.rstrip([chars]) 

s.expandtabs([tabsize]) 

#把s中的tab

字元替換

沒空格,每個tab替換為tabsize個空格,預設是8個 

字串的分割和組合: 

s.split([sep, [maxsplit]]) 

#以sep為分隔符,把s分成乙個list。maxsplit表示分割的次數。預設的分割符為空白字元 

s.rsplit([sep, [maxsplit]]) 

s.splitlines([keepends]) 

#把s按照行分割符分為乙個list,keepends是乙個bool值,如果為真每行後而會保留行分割符。 

s.join(seq) #把seq代表的序列──字串序列,用s連線起來 

string.maketrans(from, to) 

#返回乙個256個字元組成的翻譯表,其中from中的字元被一一對應地轉換成to,所以from和to必須是等長的。 

s.translate(table[,deletechars]) 

# 使用上面的函式產後的翻譯表,把s進行翻譯,並把deletechars中有的字元刪掉。需要注意的是,如果s為unicode字串,那麼就不支援 deletechars引數,可以使用把某個字元翻譯為none的方式實現相同的功能。此外還可以使用codecs模組的功能來建立更加功能強大的翻譯表。 

字串還有一對編碼和解碼的函式: 

s.encode([encoding,[errors]]) 

# 其中encoding可以有多種值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支援。errors預設值為"strict",意思是unicodeerror。可能的值還有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通過codecs.register_error註冊的值。這一部分內容涉及codecs模組,不是特明白 

s.decode([encoding,[errors]]) 

字串的測試函式,這一類函式在string模組中沒有,這些函式返回的都是bool值: 

s.startwith(prefix[,start[,end]]) 

#是否以prefix開頭 

s.endwith(suffix[,start[,end]]) 

#以suffix結尾 

s.isalnum() 

#是否全是字母和數字,並至少有乙個字元 

s.isalpha() #是否全是字母,並至少有乙個字元 

s.isdigit() #是否全是數字,並至少有乙個字元 

s.isspace() #是否全是空白字元 

s.islower() #s中的字母是否全是小寫 

s.isupper() #s中的字母是否全是大寫 

s.istitle() #s是否是首字母大寫的 

字串型別轉換函式,這幾個函式只在string模組中有: 

string.atoi(s[,base]) 

#base預設為10,如果為0,那麼s就可以是012或0x23這種形式的字串,如果是16那麼s就只能是0x23或0x12這種形式的字串 

string.atol(s[,base]) #轉成long 

string.atof(s[,base]) #轉成float 

這裡再強調一次,字串物件是不可改變的,也就是說在

python

建立乙個字串後,你不能把這個字元中的某一部分改變。任何上面的函式改變了字串後,都會返回乙個新的字串,原字串並沒有變。其實這也是有變通的辦法的,可以用s=list(s)這個函式把s變為由單個字元為成員的list,這樣的話就可以使用s[3]='a'的方式改變值,然後再使用s=" ".join(s)還原成字串

python中常用字串

轉義字元 因為一些特殊字元是python中的關鍵字或一些特殊的概念如換行。所以以特殊字元 開頭。構造轉義字元。n 換行 t 製表符 單引號 雙引號 反斜槓 for i in abc print i a b c hello 4 0 了解 字串 count 子字串 搜尋子串出現次數 xyaxyaxy c...

ACM中常用字串函式

1.字串替換 語法 replace char str,char key,char swap 引數 str 在此源字串進行替換操作 key 被替換的字串,不能為空串 swap 替換的字串,可以為空串,為空串表示在源字元中刪除key 返回值 null 注意 預設str長度小於1000,如否,重新設定設定...

MySQL中常用字串函式

分類 資料庫技術2014 04 07 23 06 6708人閱讀 舉報1.字串長度函式char length str length str char length 返回值為字串str的長度,長度的單位為字元。乙個多位元組字元算作乙個單字元。對於乙個包含五個二位元組字符集,length 返回值為 10...