Python 2.7 Python原始Unicode转义编码

Python 2.7 Python原始Unicode转义编码,python-2.7,unicode,encoding,Python 2.7,Unicode,Encoding,我正在阅读Python2.7的文档,我只是不明白。原始文件如下: 对于专家来说,还有一种与普通字符串类似的原始模式。为了让Python使用原始Unicode转义编码,您必须在开头的引号前面加上“ur”。仅当小“u”前面的反斜杠数量不均匀时,才会应用上述\uxxx转换。 我想知道为什么反斜杠的数量是不均匀的。这只是一条规则还是其他原因?\uxxx转义是在原始字符串中特别处理的,正如您引用的文本所述ur'\\\'是一个包含四个反斜杠的字符串,而ur'\\\\u0020\\'是四个反斜杠和一个空格。

我正在阅读Python2.7的文档,我只是不明白。原始文件如下:

对于专家来说,还有一种与普通字符串类似的原始模式。为了让Python使用原始Unicode转义编码,您必须在开头的引号前面加上“ur”。仅当小“u”前面的反斜杠数量不均匀时,才会应用上述\uxxx转换。


我想知道为什么反斜杠的数量是不均匀的。这只是一条规则还是其他原因?

\uxxx
转义是在原始字符串中特别处理的,正如您引用的文本所述
ur'\\\'
是一个包含四个反斜杠的字符串,而
ur'\\\\u0020\\'
是四个反斜杠和一个空格。如果我不得不猜测为什么要识别
\u
必须有不均匀数量的反斜杠,我猜这是因为非原始字符串解析器也是这样工作的(我还没有查看源代码以确定)。
为什么的问题可能归结为Python2的“因为它是这样定义的”。Python3不再这样做了-
r'\\\u0020\\\'

“\u0020\\\”

那么你的“你好”\u0020世界”之间有什么区别呢
u'Hello\u0020World!'没什么-试试看!为什么反斜杠转义即使在原始字符串中也仍然有效?@Chaos“因为它是这样定义的”。请注意,Python 3并不是这样工作的,所以把它当作一个被删除的疣。@ Mark Tolonen -谢谢,你是正确的;我没有检查Py3