Python错误 - 或者我的愚蠢 - 当扫描字符串文字时EOL

问题描述:

我看不到以下两行之间的显着差异。Python错误 - 或者我的愚蠢 - 当扫描字符串文字时EOL

然而,第一个解析,而后者,并没有。

In [5]: n=""" \\"Axis of Awesome\\" """ 

In [6]: n="""\\"Axis of Awesome\\"""" 
    File "<ipython-input-6-d691e511a27b>", line 1 
    n="""\\"Axis of Awesome\\"""" 
           ^
SyntaxError: EOL while scanning string literal 

这是一个Python的bug /功能/古怪,或者我错过了一些基本的东西?

+1

只要使用' '''的',而不是' “”“' –

+0

' \\'不会脱离引号,因为它是一个反斜杠。 – katrielalex

最后四个引号被解析为""",即字符串的结束,其次是",即一个新的字符串字面的开始。虽然这个新的文字从来没有完成。简单的例子:

>>> """foo""""bar" 
'foobar' 
>>> """foo""" "bar" 
'foobar' 

如果你想避免这个问题,然后更换"""r'或逃避"

>>> """\\"Axis of Awesome\\\"""" 
'\\"Axis of Awesome\\"' 
>>> r'\"Axis of Awesome\"' 
'\\"Axis of Awesome\\"' 
+0

r'很好的解决方法 –

您最后4个引号的评估结果为"" & "",而不是您期望的评估结果为" & """。在

"""\\"Axis of Awesome\\"""" 

+2

实际上,它被解析为''“”'',然后''' –