1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
string的其他操作以及說明(參考):
在python有各種各樣的string操作函數。在歷史上string類在python中經歷了一段輪回的歷史。在最開始的時候,python有一個專門的string的module,要使用string的方法要先import,但后來由于眾多的python使用者的建議,從python2.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補足
字符串中的搜索和替換:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
字符串的分割和組合:
1 2 3 4 5 6 |
|
字符串的mapping,這一功能包含兩個函數:
1 2 3 4 5 6 7 8 9 10 |
|
字符串的測試函數,這一類函數在string模塊中沒有,這些函數返回的都是bool值:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
字符串類型轉換函數,這幾個函數只在string模塊中有:
1 2 3 4 |
|
這里再強調一次,字符串對象是不可改變的,也就是說在python創建一個字符串后,你不能把這個字符中的某一部分改變。任何上面的函數改變了字符串后,都會返回一個新的字符串,原字串并沒有變。其實這也是有變通的辦法的,可以用S=list(S)這個函數把S變為由單個字符為成員的list,這樣的話就可以使用S[3]='a'的方式改變值,然后再使用S=" ".join(S)還原成字符串