还请参阅Why can't I end a raw string with a backslash?和Why can't Python's raw string literals end with a single backslash?的问题和相关答案。
在我的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
can't print '\' (single backslash) in Python
Python regex to replace double backslash with single backslash
Convering double backslash to single backslash in Python 3
Why can't I end a raw string with a backslash?
Why can't Python's raw string literals end with a single backslash?
发布于 2015-05-17 03:37:04
这里的问题很简单,系统假设单个反斜杠用于转义,您正在转义引用,否则必须转义字符。这将发生在任何允许字符禁用另一个字符函数的环境中。
https://stackoverflow.com/questions/30283082
复制相似问题