另请参阅为什么我不能用反斜杠结束原始字符串?而为什么不能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
>>>
Run Code Online (Sandbox Code Playgroud)
我宁愿在整个程序中使用原始字符串保持一致,并且"\\"在几个地方使用它看起来像一个kludge.使用r"\\"[0]并不是更好.我一直在使用一个常数也被认为是BACKSLASH其中BACKSLASH = r"\\"[0]在程序的开始.另一个kludge.
更新:
当原始字符串末尾有一个奇数个反斜杠时,也会发生此错误.使用的默认字符串扫描程序将反斜杠解释为转义字符,以便最后一个反斜杠将转义结束引号字符.它的目的是"并且'可以嵌入到字符串中,但是生成的字符串仍然会将内部的反斜杠作为普通字符.
有几个与此问题相关的问题,但没有一个答案解释了为什么单个反斜杠原始字符串是错误或如何将单个反斜杠编码为原始字符串: