WithCoderWithCoderWithCoder

Python基本数据类型之字符串转义序列

    和其他编程语言一样,在字符串中,有时需要包含一些特殊的符号,如在字符串中包含单引号或双引号,但是这些符号不能直接输出,否则程序就会报错。这时,就需要使用字符的转义序列。

    转义是当由于技术等原因,无法直接在代码中写出所要的字符时采用的,以多个字符的有序组合来表示原本需要的字符的手段,而转义序列(escape sequence)指在转义时使用的有序字符组合。

    例如,当我们需要在字符串中使用单引号或双引号时,是不能直接使用单引号或双引号:

>>> print('hello "w"orld')
hello "w"orld
>>> print('hello 'w'orld')
SyntaxError: invalid syntax
>>> print("hello "w"orld")
SyntaxError: invalid syntax
>>>

    要解决这个问题,有两种方式:

    • 使用三重引号

    • 使用转义序列

    转义序列以反斜杠(\)开头,并以不同的方式解释。如果使用单引号来表示字符串,那么字符串内的所有单引号都必须转义,双引号也不例外。

    使用三重引号:   

>>> print('''hello 'w'orld''')
hello 'w'orld
>>> print("""hello 'w'orl"d"""")
      
SyntaxError: EOL while scanning string literal
>>>

    通过以上代码,可以看出,当使用三重引号时,如果使用单引号或双引号,而字符串中的引号和三重引号相同时,同样会引起错误。

    使用转义序列:   

>>> print("hello \'w\'orl\"d\"")
hello 'w'orl"d"
>>>

    通过转义序列,可以正确的输出想要的结果。   

    以下是 Python 支持的所有转义序列的列表:

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
\'单引号
\"双引号
\a响铃
\b退格(Backspace)
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,yy 代表的字符,例如:\o12 代表换行,其中 o 是字母,不是数字 0。
\xyy十六进制数,yy代表的字符,例如:\x0a代表换行
\other其它的字符以普通格式输出

    举例:

>>> print('c:\\windows')
c:\windows
>>> print('hello\nworld')
hello
world
>>>

    原始字符串

    原始字符串(Raw String),所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

    有时,可能希望忽略字符串中的转义序列:   

>>> print('c:\\windows')
c:\windows

    如果希望输出“c:\\windows”,但上面的代码中的反斜杠被转义了,不是我们希望的结果。这时,就可以使用原始字符串,在字符串前加上前缀 r 或者 R(大小写均可):

>>> print(r'c:\\windows')
c:\\windows
>>>

    R 是 Raw 的缩写,以其开头的字符串被称作原始字符串,并将反斜杠视为原义字符。因此,其中的任何转义序列都不会被特别处理,将会被忽略。

欢迎分享交流,转载请注明出处:WithCoder » Python基本数据类型之字符串转义序列