一、字符串

1、定义和初始化

In [4]: s = "hello python"In [4]: s = "hello python"In [5]: sOut[5]: 'hello python'In [6]: s = 'hello python'In [7]: sOut[7]: 'hello python'In [8]: s = '''hello python'''In [9]: sOut[9]: 'hello python'In [10]: s = """hello python"""In [11]: sOut[11]: 'hello python'
 python中单双引号没有区别,只能定义单行字符串 三引号能定义多行字符串 单双三引号是有区别的
In [24]: s = 'hello  python  File "<ipython-input-24-54fb5309d2d0>", line 1    s = 'hello  python                      ^SyntaxError: EOL while scanning string literalIn [25]: s = 'hello  python \        # 续写上一行    ...: i like python'In [26]: sOut[26]: 'hello  python i like python'In [22]: s = """hello python    ...: i like python"""In [23]: sOut[23]: 'hello python\ni like python'

工厂函数str():

In [12]: print(str.__doc__)str(object='') -> strstr(bytes_or_buffer[, encoding[, errors]]) -> strCreate a new string object from the given object. If encoding orerrors is specified, then the object must expose a data bufferthat will be decoded using the given encoding and error handler.Otherwise, returns the result of object.__str__() (if defined)or repr(object).encoding defaults to sys.getdefaultencoding().errors defaults to 'strict'.In [13]: s = str("abc")In [14]: sOut[14]: 'abc'In [16]: s = str([1, 2])In [17]: sOut[17]: '[1, 2]'In [18]: s = str(1)In [19]: sOut[19]: '1'

2、字符串本义

In [32]: s = "i like \n python"In [33]: sOut[33]: 'i like \n python'In [34]: s = "i like \npython"In [35]: sOut[35]: 'i like \npython'In [36]: s = 'I'm xj'  File "<ipython-input-36-0b8827686244>", line 1    s = 'I'm xj'           ^SyntaxError: invalid syntaxIn [37]: s = 'I\'m xj'In [38]: sOut[38]: "I'm xj"In [50]: path = 'c:\windows\nt\system32'    # 这里的\n可能会被本义成换行符In [51]: pathOut[51]: 'c:\\windows\nt\\system32'In [52]: path = 'c:\\windows\\nt\\system32'  # 个别须要这么写In [53]: pathOut[53]: 'c:\\windows\\nt\\system32'In [54]: path = r'c:\windows\nt\system32'   # 加r(raw)能示意此字符串是天然字符串,不会本义In [55]: pathOut[55]: 'c:\\windows\\nt\\system32'

二、字符串的操作

1、索引操作

In [59]: s = "I'm xjj"In [60]: s[1]Out[60]: "'"In [61]: s[2]Out[61]: 'm'In [62]: s[3]Out[62]: ' '

2、str的连贯和宰割

1)str的连贯

str.join()

应用str将可迭代对象的str元素连接成1个str

参数是元素都为str的可迭代对象,接收者是分隔符

In [71]: print(str.join.__doc__)S.join(iterable) -> strReturn a string which is the concatenation of the strings in theiterable.  The separator between elements is S.In [81]: lst = ["I", "am", "xxj"]    # 可迭代对象的元素必须是strIn [82]: ''.join(lst)Out[82]: 'Iamxxj'In [83]: ' '.join(lst)Out[83]: 'I am xxj'In [84]: ','.join(lst)Out[84]: 'I,am,xxj'In [85]: ',!'.join(lst)Out[85]: 'I,!am,!xxj'In [86]: ' , '.join(lst)Out[86]: 'I , am , xxj'In [87]: lst = [1, 2, 3]In [88]: ','.join(lst)---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-88-b4c772e35459> in <module>()----> 1 ','.join(lst)TypeError: sequence item 0: expected str instance, int found

+

In [93]: "hello" + "python"Out[93]: 'hellopython'In [94]: str1 = "xxj"In [95]: str1 + 1---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-95-2584ac008f78> in <module>()----> 1 str1 + 1TypeError: must be str, not intIn [96]: str1 + "hello"Out[96]: 'xxjhello'In [97]: str1 + " hello"Out[97]: 'xxj hello'

2)宰割

str.split()

不原地批改,返回应用分隔符分隔的列表

In [99]: print(s.split.__doc__)S.split(sep=None, maxsplit=-1) -> list of stringsReturn a list of the words in S, using sep as thedelimiter string.  If maxsplit is given, at most maxsplitsplits are done. If sep is not specified or is None, anywhitespace string is a separator and empty strings areremoved from the result.In [98]: s = "I love python"In [100]: s.split("o")              # 默认分隔所有Out[100]: ['I l', 've pyth', 'n']In [101]: s.split("o", 1)           # 指定分隔一次Out[101]: ['I l', 've python']In [102]: s.split()Out[102]: ['I', 'love', 'python']In [102]: s.split()                 # 默认分隔符为1个或多个空格Out[102]: ['I', 'love', 'python']In [103]: s.split("ov")            # 能够应用多个字符串当空格Out[103]: ['I l', 'e python']In [159]: s.split("A")            # 不蕴含分隔符号时,不分隔原strOut[159]: ['I love python']In [104]: s = "I love      python"In [105]: s.split()Out[105]: ['I', 'love', 'python']In [108]: s.split(" ")              # 应用一个空格当做分隔符Out[108]: ['I', 'love', '', '', '', '', '', 'python']In [110]: s.split(maxsplit=1)Out[110]: ['I', 'love      python']In [111]: s.split()Out[111]: ['I', 'love', 'python']

str.rsplit():

从右往左开始分隔;

当不指定maxsplit参数时,str.rsplit()和str.split()齐全一样,当str.split()效率更高

In [122]: s = "I love python"In [123]: s.rsplit("o")Out[123]: ['I l', 've pyth', 'n']In [124]: s.rsplit("o", 1)Out[124]: ['I love pyth', 'n']

str.splitlines():

  按行分隔,返回后果能够抉择带不带换行符;返回值是一个列表
In [136]: print(str.splitlines.__doc__)S.splitlines([keepends]) -> list of stringsReturn a list of the lines in S, breaking at line boundaries.Line breaks are not included in the resulting list unless keependsis given and true.In [137]: s = """I am xxj     ...: i love python"""In [138]: sOut[138]: 'I am xxj\ni love python'In [139]: s.splitlines()Out[139]: ['I am xxj', 'i love python']In [140]: s.splitlines(true)---------------------------------------------------------------------------NameError                                 Traceback (most recent call last)<ipython-input-140-dfaf8d28775c> in <module>()----> 1 s.splitlines(true)NameError: name 'true' is not definedIn [141]: s.splitlines(True)Out[141]: ['I am xxj\n', 'i love python']

str.partition():

总是返回一个三元组,它被传入的分隔符分隔1次,分隔成(head, sep,tail)

In [145]: print(str.partition.__doc__)S.partition(sep) -> (head, sep, tail)Search for the separator sep in S, and return the part before it,the separator itself, and the part after it.  If the separator is notfound, return S and two empty strings.In [147]: s = "I love python"In [148]: s.partition("o")Out[148]: ('I l', 'o', 've python')

str.rpartition()是str.partition()从右往左的版本:

In [153]: s.rpartition("o")Out[153]: ('I love pyth', 'o', 'n')In [154]: s.rpartition("A")Out[154]: ('', '', 'I love python')In [155]: "A".rpartition("A")Out[155]: ('', 'A', '')In [156]: "".rpartition("A")Out[156]: ('', '', '')In [157]: " ".rpartition("A")Out[157]: ('', '', ' ')

3、str大小写转换与排版

In [2]: s = "I love python"In [3]: s.upper()Out[3]: 'I LOVE PYTHON'In [5]: s.lower()Out[5]: 'i love python'In [6]: s.title()        # 首字母全副大写Out[6]: 'I Love Python'In [8]: s.capitalize()   # 把首字母大写Out[8]: 'I love python'In [10]: print(s.center.__doc__)       # 在给定宽度下居中,能够应用单个字符填充S.center(width[, fillchar]) -> strReturn S centered in a string of length width. Padding isdone using the specified fill character (default is a space)In [11]: s.center(50)Out[11]: '                  I love python                   'In [12]: s.center(50, "#")Out[12]: '##################I love python###################'In [13]: s.center(50, "#%")---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-13-4aa39ce1c3b3> in <module>()----> 1 s.center(50, "#%")TypeError: The fill character must be exactly one character longIn [19]: sOut[19]: 'I love python'In [20]: s.zfill(5)Out[20]: 'I love python'In [21]: s.zfill(50)        # 用0填充Out[21]: '0000000000000000000000000000000000000I love python'In [23]: print(s.casefold.__doc__)S.casefold() -> strReturn a version of S suitable for caseless comparisons.In [25]: sOut[25]: 'I love python'In [26]: s.casefold()     # 返回一个对立大小写的str,在不同平台有不同的表现形式Out[26]: 'i love python' In [27]: s.swapcase()     # 替换大小写Out[27]: 'i LOVE PYTHON'In [36]: "\t".expandtabs()  # 默认将\t转换为8个空格Out[36]: '        'In [40]: "\t".expandtabs(8)Out[40]: '        'In [37]: "\t".expandtabs(3)Out[37]: '   '

4、批改

str.replace()

应用new str替换old str,返回新的str

In [44]: help(str.replace.__doc__)No Python documentation found for 'S.replace(old, new[, count]) -> str\n\nReturn a copy of S with all occurrences of substring\nold replaced by new.  If the optional argument count is\ngiven, only the first count occurrences are replaced.'.Use help() to get the interactive help utility.Use help(str) for help on the str class.In [47]: sOut[47]: 'I love python'In [48]: s.replace("love", "give up")Out[48]: 'I give up python'In [49]: s.replace("o", 0)---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-49-184707d40696> in <module>()----> 1 s.replace("o", 0)TypeError: replace() argument 2 must be str, not intIn [50]: s.replace("o", "O")Out[50]: 'I lOve pythOn'In [51]: s.replace("o", "O", -1)Out[51]: 'I lOve pythOn'In [52]: s.replace("o", "O", 0)Out[52]: 'I love python'In [53]: s.replace("o", "O", 1)Out[53]: 'I lOve python'In [54]: s.replace("o", "O", 5)Out[54]: 'I lOve pythOn'

str.strip()

str.rstrip()

str.lstrip()

移除str首尾指定字符汇合内的字符

In [62]: print(str.strip.__doc__)S.strip([chars]) -> strReturn a copy of the string S with leading and trailingwhitespace removed.If chars is given and not None, remove characters in chars instead.In [66]: s = " I love python  "In [67]: sOut[67]: ' I love python  'In [68]: s.strip()           # 默认去掉首尾的空白字符Out[68]: 'I love python'In [69]: s.lstrip()          # 去掉首部的空白字符Out[69]: 'I love python  'In [70]: s.rstrip()          # 去掉尾部的空白字符Out[70]: ' I love python'In [76]: s = "\n \r \t haha \n \r\t"In [77]: sOut[77]: '\n \r \t haha \n \r\t'In [78]: s.strip()Out[78]: 'haha'In [84]: s = "I love python haha"In [86]: s.strip("a")Out[86]: 'I love python hah'In [87]: s.strip("ha")Out[87]: 'I love python 'In [88]: s.strip("on")Out[88]: 'I love python haha'In [89]: sOut[89]: 'I love python haha'In [91]: s = "{{ haha haha }}"In [92]: sOut[92]: '{{ haha haha }}'In [94]: s.strip("{}") Out[94]: ' haha haha 'In [95]: s.strip("{}s")      # 移除指定字符汇合里的字符Out[95]: ' haha haha 'In [96]: s.lstrip("{}s")Out[96]: ' haha haha }}'

str.ljust()

str.rjust()

左\右对其并填充

In [98]: print(str.ljust.__doc__)S.ljust(width[, fillchar]) -> strReturn S left-justified in a Unicode string of length width. Padding isdone using the specified fill character (default is a space).In [105]: s = "xxj"In [106]: s.ljust(3)Out[106]: 'xxj'In [107]: s.ljust(1)Out[107]: 'xxj'In [108]: s.ljust(10)Out[108]: 'xxj       'In [109]: s.ljust(10, "A")Out[109]: 'xxjAAAAAAA'In [110]: s.ljust(10, "Ab")---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-110-b45e86b2e828> in <module>()----> 1 s.ljust(10, "Ab")TypeError: The fill character must be exactly one character longIn [111]: s.rjust(10, "A")Out[111]: 'AAAAAAAxxj'

5、查找

str.index()

str.rindex()

str.find()

str.rfind()

str.count()

In [32]: print(str.find.__doc__)S.find(sub[, start[, end]]) -> intReturn the lowest index in S where substring sub is found,such that sub is contained within S[start:end].  Optionalarguments start and end are interpreted as in slice notation.Return -1 on failure.In [23]: s = "I am xxj, i love python"In [24]: s.find("x")Out[24]: 5In [25]: s.find("xx")Out[25]: 5In [26]: s.find("o")Out[26]: 13In [27]: s.find("o", 13, 13)Out[27]: -1In [28]: s.find("o", 13, 14)Out[28]: 13In [29]: s.find("o", 14, 50)Out[29]: 21In [30]: s.find("o", 14, 21)Out[30]: -1In [33]: s.find("A")Out[33]: -1In [34]: s.find("o", -1, -15)Out[34]: -1In [35]: s.find("o", -15, -1)Out[35]: 13In [37]: s.rfind("o")Out[37]: 21

str.index()和str.find()的区别:

当给定的值不在查找范畴时,str.index()会抛出ValueError而str.find()返回-1

   str的count()办法和list、tuple的count()办法不一样,也能够限度查找范畴   str有rindex(),list、tuple没有

6、判断

str.startswith()

str.endswith()

给定范畴内的str是否以给定substr结尾或结尾

In [64]: sOut[64]: 'I am xxj, i love python'In [66]: s.startswith("i")Out[66]: FalseIn [67]: s.startswith("I")Out[67]: TrueIn [68]: s.startswith("I am x")Out[68]: TrueIn [69]: s.endswith("n")Out[69]: TrueIn [70]: s.endswith("thon")Out[70]: TrueIn [71]: s.startswith("x", 5)Out[71]: TrueIn [72]: s.startswith("xxj", 5)Out[72]: TrueIn [73]: s.startswith("xxj", 5, 5)Out[73]: FalseIn [74]: s.startswith("xxj", 5, 7)Out[74]: FalseIn [75]: s.startswith("xxj", 5, 8)Out[75]: True

7、isxxx() 判断类函数

看懂办法的意思就晓得用处

In [80]: s.isalnum()Out[80]: FalseIn [81]: "abc123".isalnum()Out[81]: TrueIn [82]: "abc123".isalpha()Out[82]: FalseIn [83]: "abc".isalpha()Out[83]: TrueIn [84]: "abc".isdecimal()Out[84]: FalseIn [85]: "120".isdecimal()Out[85]: TrueIn [86]: "120.123".isdecimal()Out[86]: FalseIn [87]: "120.123".isdigit()Out[87]: FalseIn [88]: "abc,".isdigit()Out[88]: FalseIn [89]: ".,".isdigit()Out[89]: FalseIn [90]: "120123".isdigit()Out[90]: TrueIn [91]: "120123".isspace()Out[91]: FalseIn [92]: "\t".isspace()Out[92]: True