類型 |
方法 |
註解 |
填充 |
center(width[, fillchar]) ,ljust(width[, fillchar]),rjust(width[, fillchar]),zfill(width),expandtabs([tabsize]) |
l fillchar 參數指定了用以填充的字元,預設為空白格 l 顧名思義,zfill()即是以字元0進行填充,在輸出數值時比較常用 l expandtabs()的tabsize 參數預設為8。它的功能是把字串中的定位字元(tab)轉換為適當數量的空格。 |
刪減 |
strip([chars]),lstrip([chars]),rstrip([chars]) |
*strip()函數族用以去除字串兩端的空白符,空白符由string.whitespace常量定義。 |
變形 |
lower(),upper(),capitalize(),swapcase(),title() |
title()函數是比較特別的,它的功能是將每一個單詞的首字母大寫,並將單詞中的非首字母轉換為小寫(英文文章的標題通常是這種格式)。>>> 'hello wORld!'.title()'Hello World!'因為title() 函數並不去除字串兩端的空白符也不會把連續的空白符替換為一個空格,所以建議使用string 模組中的capwords(s)函數,它能夠去除兩端的空白符,再將連續的空白符用一個空格代替。>>> ' hello world!'.title()' Hello World!'>>> string.capwords(' hello world!')'Hello World!' |
分切 |
partition(sep),rpartition(sep),splitlines([keepends]),split([sep [,maxsplit]]),rsplit([sep[,maxsplit]]) |
l *partition() 函數族是2.5版本新增的方法。它接受一個字串參數,並返回一個3個元素的 tuple 對象。如果sep沒出現在母串中,傳回值是 (sep, ‘’, ‘’);否則,傳回值的第一個元素是 sep 左端的部分,第二個元素是 sep 自身,第三個元素是 sep 右端的部分。 l 參數 maxsplit 是分切的次數,即最大的分切次數,所以傳回值最多有 maxsplit+1 個元素。 l s.split() 和 s.split(‘ ‘)的傳回值不盡相同 >>> ' hello world!'.split()['hello', 'world!']>>> ' hello world!'.split(' ')['', '', 'hello', '', '', 'world!']產 生差異的原因在於當忽略 sep 參數或sep參數為 None 時與明確給 sep 賦予字串值時 split() 採用兩種不同的演算法。對於前者,split() 先去除字串兩端的空白符,然後以任意長度的空白符串作為界定符分切字串(即連續的空白符串被當作單一的空白符看待);對於後者則認為兩個連續的 sep 之間存在一個Null 字元串。因此對於Null 字元串(或空白符串),它們的傳回值也是不同的:>>> ''.split()[]>>> ''.split(' ')[''] |
串連 |
join(seq) |
join() 函數的高效率(相對於迴圈相加而言),使它成為最值得關注的字串方法之一。它的功用是將可迭代的字串序列串連成一條長字串,如:>>> conf = {'host':'127.0.0.1',... 'db':'spam',... 'user':'sa',... 'passwd':'eggs'}>>> ';'.join("%s=%s"%(k, v) for k, v in conf.iteritems())'passswd=eggs;db=spam;user=sa;host=127.0.0.1' |
判定 |
isalnum(),isalpha(),isdigit(),islower(),isupper(),isspace(),istitle(),startswith(prefix[, start[, end]]),endswith(suffix[,start[, end]]) |
這些函數都比較簡單,顧名知義。需要注意的是*with()函數族可以接受可選的 start, end 參數,善加利用,可以最佳化效能。另,自 Py2.5 版本起,*with() 函數族的 prefix 參數可以接受 tuple 類型的實參,當實參中的某人元素能夠匹配,即返回 True。 |
尋找 |
count( sub[, start[, end]]),find( sub[, start[, end]]),index( sub[, start[, end]]),rfind( sub[, start[,end]]),rindex( sub[, start[, end]]) |
find()函數族找不到時返回-1,index()函數族則拋出ValueError異常另,也可以用 in 和 not in 操作符來判斷字串中是否存在某個模板。 |
替換 |
replace(old, new[,count]),translate(table[,deletechars]) |
l replace()函數的 count 參數用以指定最大替換次數 l translate() 的參數 table 可以由 string.maketrans(frm, to) 產生 l translate() 對 unicode 對象的支援並不完備,建議不要使用。 |
編碼 |
encode([encoding[,errors]]),decode([encoding[,errors]]) |
這 是一對互逆操作的方法,用以編碼和解碼字串。因為str是平台相關的,它使用的內碼依賴於作業系統環境,而unicode是平台無關的,是Python 內部的字串儲存方式。unicode可以通過編碼(encode)成為特定編碼的str,而str也可以通過解碼(decode)成為unicode。 |