python 學習筆記之string

2021-06-07 18:25:30 字數 3310 閱讀 2550

在 程式設計中,幾乎90%以上的**都是關於整數或字串操作,所以與整數一樣,python 的字串實現也使用了許多拿優化技術,使得字串的效能達到極致。與c++ 標準庫(stl)中的 std::string 不同,python字串集合了許多字串相關的演算法,以方法成員的方式提供介面,使用起來非常方便。 型別

方法

註解

填充

center(width[, fillchar]),

ljust(width[,fillchar]),

rjust(width[,fillchar]),

zfill(width),

expandtabs([tabsize])

lfillchar引數指定了用以填充的字元,預設為空格

l顧名思義,zfill()即是以字元0進行填充,在輸出數值時比較常用

lexpandtabs()的tabsize引數預設為8。它的功能是把字串中的製表符(tab)轉換為適當數量的空格。

刪減

strip([chars]),

lstrip([chars]),

rstrip([chars])

*strip()函式族用以去除字串兩端的空白符,空白符由string.whitespace常量定義。

變形

lower(),

upper(),

capitalize(),

swapcase(),

title()

title()函式是比較特別的,它的功能是將每乙個單詞的首字母大寫,並將單詞中的非首字母轉換為小寫(英文文章的標題通常是這種格式)。

>>> 'helloworld!'.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 個元素。

ls.split()和 s.split(『 『)的返回值不盡相同

>>> 'hello

world!'.split()

['hello', 'world!']

>>> 'hello

world!'.split(' ')

['', '', 'hello', '', '', 'world!']

產生差異的原因在於當忽略 sep 引數或sep引數為 none 時與明確給 sep 賦予字串值時 split()採用兩種不同的演算法。對於前者,split()先去除字串兩端的空白符,然後以任意長度的空白符串作為界定符分切字串(即連續的空白符串被當作單一的空白符看待);對於後者則認為兩個連續的sep 之間存在乙個空字串。因此對於空字串(或空白符串),它們的返回值也是不同的:

>>> ''.split()

>>> ''.split('')

['']

連線

join(seq)

join()函式的高效率(相對於迴圈相加而言),使它成為最值得關注的字串方法之一。它的功用是將可迭代的字串序列連線成一條長字串,如:

>>> conf =

>>>';'.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])

lreplace()函式的count 引數用以指定最大替換次數

ltranslate()的引數 table 可以由 string.maketrans(frm, to) 生成

ltranslate()對 unicode 物件的支援並不完備,建議不要使用。

編碼

encode([encoding[,errors]]),

decode([encoding[,errors]])

這是一對互逆操作的方法,用以編碼和解碼字串。因為str是平台相關的,它使用的內碼依賴於作業系統環境,而unicode是平台無關的,是python內部的字串儲存方式。unicode可以通過編碼(encode)成為特定編碼的str,而str也可以通過解碼(decode)成為unicode。

Python函式之filter 和strip

python函式之filter 和strip 編寫乙個remove false 函式 將引數中的 假 去掉 remove false 0,1,2,false,fishc 34 1,2,fishc 34 lst 0,1,2,false,fishc 34 def remove false lst ret...

Python學習筆記之IF

關係表示式 邏輯表示式 and,or,not 單分支 num 0 if num 1 print num 大於 1 else print num 不大於1 雙分支 num 10 if num 1 print num 大於 10 elif num 10 print num 等於 10 elif num ...

Python學習筆記 Python之函式

1.函式引數函式定義的時候自己定義的引數,稱為形參 函式呼叫時候,其引數為實參,即實際要傳遞的引數 舉例 def pname username username 形參 print username pname python 傳遞了乙個實參 args是接受所有未命名的引數 關鍵字 是乙個元組型別 ag...