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 /功能/古怪,或者我错过了一些基本的东西?
答
最后四个引号被解析为"""
,即字符串的结束,其次是"
,即一个新的字符串字面的开始。虽然这个新的文字从来没有完成。简单的例子:
>>> """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
实际上,它被解析为''“”'',然后''' –
只要使用' '''的',而不是' “”“' –
' \\'不会脱离引号,因为它是一个反斜杠。 – katrielalex