python中对于字符串的处理,也是相当厉害的

不仅支持传统编程语言中的双引号模式,也支持shell中的单引号模式,甚至还可以用三引号一次搞定多行字符串!

一对单引号的模式

>>> 'spam eggs'
'spam eggs'
>>> 'doesn\'t'
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'

一对双引号的模式

>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> hello = "This is a rather long string containing\n\
... several lines of text just as you would do in C.\n\
...     Note that whitespace at the beginning of the line is\
...  significant."
>>> print hello
This is a rather long string containing
several lines of text just as you would do in C.
    Note that whitespace at the beginning of the line is significant.

一对三引号的模式

>>> print """\
... Usage: thingy [OPTIONS]
...      -h                        Display this usage message
...      -H hostname               Hostname to connect to
... """
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to

总结:


    如果字符串中只包含单引号,不包含双引号,那就可以用一对双引号给包起来

    如果字符串中之包含双引号,不包含单引号,那就可以用一对单引号给包起来

    当需要使用多行的字符串时,可以使用一对三引号,被三引号给包起来的所有内容不进行转义,即所有转义字符无效


同时,还可以使用“原始”字符串,与三引号具有同样的效果,只需要在引号前面加个“r"

>>> hello = r"This is a rather long string containing\n\
... several lines of text much as you would do in C."
>>> print(hello)
This is a rather long string containing\n\
several lines of text much as you would do in C.


字符串还可以任意拼接和重复

>>> '<' + ' niko '*5 + '>'
'< niko  niko  niko  niko  niko >'


相邻的两个引号内的字符串即使不用加号也会自动拼接在一起,但在调用方法时不适用

>>> 'str' 'ing'                   #  <-  This is ok
'string'
>>> 'str'.strip() + 'ing'   #  <-  This is ok
'string'
>>> 'str'.strip() 'ing'     #  <-  This is invalid
  File "<stdin>", line 1, in ?
    'str'.strip() 'ing'
                      ^
SyntaxError: invalid syntax


可以使用冒号来取任意长度的连续字符串

>>> word = 'str' 'ing'
>>> word[4]     #取4
'n'
>>> word[2:]    #2到最后
'ring'
>>> word[:2]    #最前到2
'st'
>>> word[0:2]   #取0-2
'st'


python字符串定义后为常量,不可任意修改其中的某个字符

>>> word[2] = 'k'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment


索引也可以为负值,即自右向左算

>>> word[-2:]
'ng'
>>> word[:-2]
'stri'


-0其实就是0,官方给出的示例索引表如下


 +---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1


字符串求长度函数为len()

>>> s = 'jreiouwtndouijfnbvioftretjk'
>>> len(s)
27