还可以查看为什么不能以反斜杠结束原始字符串?和为什么Python的原始字符串文字不能以单个反斜杠结尾?问题及相关答案。
在我的 Python 2 程序中,我使用了许多包含反斜杠的文本字符串。我可以使用另一个反斜杠来转义这些反斜杠(例如:
"red\\blue"
),或者使用 Python 原始字符串(例如:r"red\blue"
)。我已经标准化使用原始字符串方法,在所有情况下都有效,除了其中一种情况。如果我想表示双斜杠,我可以使用
r"\\"
,但是如果我试图输入单个反斜杠字面值r"\"
,Python 就会报语法错误。显然的解决方法是在这种情况下使用 "\\"
,但是为什么单个原始字符串反斜杠会出错?这是 Python 中的一个错误吗?有没有一种方法可以将单个反斜杠编码为原始字符串?示例:
>>> r"red\blue"
'red\\blue'
>>> r"\\"
'\\\\'
>>> r"\"
File "<stdin>", line 1
r"\"
^
SyntaxError: EOL while scanning string literal
>>>
我更倾向于在整个程序中始终使用原始字符串,并且在多个地方使用
"\\"
似乎很笨拙。使用r"\\"[0]
也不会更好。我还考虑过在程序开头使用常量BACKSLASH
,其中BACKSLASH = r"\\"[0]
。这是另一种笨拙的方法。更新: 当原始字符串末尾有奇数个反斜杠时,也会出现此错误。使用的默认字符串扫描器将反斜杠解释为转义字符,因此最后一个反斜杠将转义结束引号字符。旨在嵌入字符串的
"
和'
,但生成的字符串仍将具有内部的反斜杠作为普通字符。有几个与此问题相关的问题,但没有答案说明单个反斜杠原始字符串为什么是错误的或如何将单个反斜杠编码为原始字符串:python replace single backslash with double backslash
r"%s" % "\\"
将产生:'\\'
。 - MattDMor"\"
中的\"
就是其中之一。 - Jonathan Lonowskir'\'
不像你期望的那样工作是令人惊讶和奇怪的。 - tripleee