Python的內建字串類(無需import);它提供了很多常用的字串處理函數。
str成員函數均不影響調用字串本身,返回一個處理後的副本。
S.center(width[, fillchar]) -> string
以fillchar(必須是一個字元,預設為一空格)填充S到寬度為width,並以S置中。
類似的還有ljust,rjust
>>> s = "notice"
>>> s.rjust(20, '*')
'**************notice'
>>> s.ljust(20, '*')
'notice**************'
>>> s.center(20, '*')
'*******notice*******'
>>> s.center(20, "-*")
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
s.center(20, "-*")
TypeError: center() argument 2 must be char, not str
>>> s.center(1)
'notice'
S.lstrip([chars]) -> string or unicode
移除S開始部分中的由chars指定的字元,chars可以是多個字元(與center不同),預設是空白字元。
只要S開始的字元在參數chars中,即剔除,而不是整體和chars匹配才剔除。
如果chars是unicode,首先要將S轉換為unicode,然後進行strip。
類似的有strip,rstrip
>>> s = string.whitespace
>>> s.lstrip()
''
>>> s = "ababcxyz"
>>> s.lstrip("abc")
'xyz'
>>> s
'ababcxyz'
S.endswith(suffix[, start[, end]]) -> bool
測試S[start:end]是不是以suffix結尾。
suffix也可以是由string組成的tuple,只要tuple中有一個元素通過測試則返回True。
類似的有startswith
>>> s = "This is a test."
>>> s.endswith("test.")
True
>>> test = ("test", "a test")
>>> s.endswith(test)
False
>>> test = ("test", "test.")
>>> s.endswith(test)
True
>>> s = "startswith"
>>> s.startswith("star")
True
>>> s.startswith("stat")
False
>>> slist = ("state", "spar")
>>> s.startswith(slist)
False
>>> slist = ("spar", "art")
>>> s.startswith(slist, 2)
True
S.count(sub[, start[, end]]) -> int
返回sub在S[start:end]中不重複出現的次數。
>>> s = "banana"
>>> s.count("an")
2
>>> s.count("ana")
1
>>> s.count("nan", -3)
0
S.find(sub [,start [,end]]) -> int
返回sub在S[start:end]中第一次出現的位置;尋找失敗返回-1(與index不同)。
類似的有rfind。
>>> s = "mississippi"
>>> s.rfind("ssi")
5
>>> s.find("ssi")
2
>>> s.find("mm")
-1
>>> s.rfind("mm")
-1
S.index(sub [,start [,end]]) -> int
同S.find(),除了:尋找失敗拋出ValueError。
類似的有rindex
>>> s = "This is a test."
>>> s.index("is")
2
>>> s.index("is", 3)
5
>>> s.index("is", 6)
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
s.index("is", 6)
ValueError: substring not found
S.isalnum() -> bool
測試非Null 字元串中的字元是否要麼是字母,要麼是數字,即a~zA~Z0~9。
類似的有isalpha,isdigit,isspace,與islower,isupper不同的是,這些函數針對S中的每個字元測試,有一個不符即返回False
>>> import string
>>> all = string.letters + string.digits
>>> all
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
>>> all.isalnum()
True
>>> none = string.punctuation
>>> none
'!"#$%&/'()*+,-./:;<=>?@[//]^_`{|}~'
>>> none.isalnum()
False
>>> a = ""
>>> a.isalnum()
False
>>> a = "This is a test"
>>> a.isalnum()
False
S.isalpha() -> bool
測試非Null 字元串是否全是字母。
>>> a = "aB12"
>>> a.isalpha()
False
>>> a = "aB"
>>> a.isalpha()
True
S.isdigit() -> bool
測試非Null 字元串是否全是數字。
>>> "ab12".isdigit()
False
>>> "12".isdigit()
True
>>> "3.14".isdigit()
False
S.isspace() -> bool
測試非Null 字元串是否全是空白。
>>> import string
>>> string.whitespace
'/t/n/x0b/x0c/r '
>>> string.whitespace.isspace()
True
>>> "/t/t /n".isspace()
True
>>> " _ ".isspace()
False
S.islower() -> bool
測試非Null 字元串中可大小寫轉換的字母是否全是小寫字母。
類似的還有isupper,lower,upper,swapcase,此類函數只測試可以大小寫字母,而忽略其他字元。
>>> "pi = 3.14".islower()
True
>>> "".islower()
False
>>> "PI = 3.14".islower()
False
>>> "PI = 3.14".isupper()
True
>>> s = "Beijing 2008"
>>> s.lower()
'beijing 2008'
>>> s.upper()
'BEIJING 2008'
>>> s
'Beijing 2008'
S.join(sequence) -> string
以S為分隔字元連結sequence中的各個字串
當len(sequence)<=1,傳回值中不會出現S。
>>> s = ["this", "is", "Beijing"]
>>> "_*_".join(s)
'this_*_is_*_Beijing'
>>> "".join(s)
'thisisBeijing'
>>> " * ".join("1234")
'1 * 2 * 3 * 4'
>>> s = ["Beijing"]
>>> a.join(s)
'Beijing'
>>> s = []
>>> a.join(s)
''
S.split([sep [,maxsplit]]) -> list of strings
返回一個string組成的list:以sep(可以是字串)為分隔字元分割S,如果sep未指定,或者是None,則以空白為分隔字元。
sep不會出現在傳回值list中。sep左右一定存在一個元素體現在返回結果中。
>>> s = "Mississippi"
>>> s.split('s')
['Mi', '', 'i', '', 'ippi']
>>> s.split('ss')
['Mi', 'i', 'ippi']
>>> s = "1/t2/n/t3/n/t end"
>>> print s
1 2
3
end
>>> s.split()
['1', '2', '3', 'end']
>>> s = ""
>>> s.split("ss")
['']
>>> s = "hello"
>>> s.split()
['hello']
>>> s = "aaaaa"
>>> s.split("aa")
['', '', 'a']
>>> s = "onion"
>>> s.split("on")
['', 'i', '']
S.splitlines([keepends]) -> list of strings
返回S中各行組成的一個list。如果想在list的每個元素中包含分行符號,需要設定keepends為True。
>>> s = "first/nsecond/nend"
>>> print s
first
second
end
>>> s.splitlines()
['first', 'second', 'end']
>>> s.splitlines(True)
['first/n', 'second/n', 'end']
>>> s = "/none line/n"
>>> s.splitlines()
['', 'one line']
>>> s.split("/n") #注意區別
['', 'one line', '']
S.partition(sep) -> (head, sep, tail)
以S中首次出現的sep為分隔字元,分割S為三部分,並返回。
同類的還有rpartition。
>>> s = 'Mississippi'
>>> s.partition('ssi')
('Mi', 'ssi', 'ssippi')
>>> s.rpartition('ssi')
('Missi', 'ssi', 'ppi')
>>> s.partition("None")
('Mississippi', '', '')
>>> s.rpartition("None")
('', '', 'Mississippi')
S.replace (old, new[, count]) -> string
返回一副本:將S中的old全部替換為new。如果指定了count,則替換前count個。
>>> s = "_-_-_"
>>> s.replace("_", "**")
'**-**-**'
>>> s.replace("_", "**", 1)
'**-_-_'
>>> s
'_-_-_'