鉴于r'\\'
相当于'\\\\'
,为什么r'\'
不等同于'\\'
?
我在python3.2上得到的是
print(r'\')
File "<stdin>", line 1
print(r'\')
^
SyntaxError: EOL while scanning string literal
答案 0 :(得分:11)
除非是偶数个反斜杠的一部分,否则不能将反斜杠作为原始字符串中的最后一个字符;它逃脱了收尾报价。
将其与:
进行比较>>> r'\ '
'\\ '
来自string literal documentation:
当存在
'r'
或'R'
前缀时,字符串中包含反斜杠后面的字符不会更改,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"
由两个字符组成:反斜杠和小写'n'
。字符串引号可以使用反斜杠进行转义,但反斜杠仍保留在字符串中;例如,r"\""
是一个有效的字符串文字,由两个字符组成:反斜杠和双引号;r"\"
不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。