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


测试非空字符串中的字符是否要么是字母,要么是数字,即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


测试非空字符串是否全是字母。

>>> a = "aB12"
 >>> a.isalpha()
 False
 >>> a = "aB"
 >>> a.isalpha()
 True

 S.isdigit() -> bool


测试非空字符串是否全是数字。

>>> "ab12".isdigit()
 False
 >>> "12".isdigit()
 True
 >>> "3.14".isdigit()
 False

 S.isspace() -> bool


测试非空字符串是否全是空白。

>>> import string
 >>> string.whitespace
 '/t/n/x0b/x0c/r '
 >>> string.whitespace.isspace()
 True
 >>> "/t/t /n".isspace()
 True
 >>> " _ ".isspace()
 False

 S.islower() -> bool


测试非空字符串中可大小写转换的字母是否全是小写字母。
类似的还有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
 '_-_-_'