因为\
仅当它们是有效的转义序列时才开始转义序列。
>>> '\n'
'\n'
>>> r'\n'
'\\n'
>>> print '\n'
>>> print r'\n'
\n
>>> '\s'
'\\s'
>>> r'\s'
'\\s'
>>> print '\s'
\s
>>> print r'\s'
\s
除非一个“R”或“R”的前缀是目前,转义序列在字符串解释根据类似于由标准C的使用的规则识别转义序列是:
Escape Sequence Meaning Notes
\newline Ignored
\\ Backslash (\)
\' Single quote (')
\" Double quote (")
\a ASCII Bell (BEL)
\b ASCII Backspace (BS)
\f ASCII Formfeed (FF)
\n ASCII Linefeed (LF)
\N{name} Character named name in the Unicode database (Unicode only)
\r ASCII Carriage Return (CR)
\t ASCII Horizontal Tab (TAB)
\uxxxx Character with 16-bit hex value xxxx (Unicode only)
\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo
\xhh Character with hex value hh
绝对不要将原始字符串用作路径文字,因为原始字符串具有一些相当特殊的内部工作原理,众所周知,它们会咬人。
如果存在“ r”或“ R”前缀,则字符串中包含反斜杠后面的字符而不会更改,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"
包含两个字符:反斜杠和小写的“ n”。可以使用反斜杠对字符串引号进行转义,但是反斜杠仍保留在字符串中;例如,r"\""
是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"
不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。另请注意,单个反斜杠后跟换行符将被解释为字符串中的这两个字符,
为了更好地说明这一点:
>>> r'\'
SyntaxError: EOL while scanning string literal
>>> r'\''
"\\'"
>>> '\'
SyntaxError: EOL while scanning string literal
>>> '\''
"'"
>>>
>>> r'\\'
'\\\\'
>>> '\\'
'\\'
>>> print r'\\'
\\
>>> print r'\'
SyntaxError: EOL while scanning string literal
>>> print '\\'
\
'\s'
(如r'\s'
)'\\s'
由于'\s'
不是公认的转义序列,因此也表示为。