【问题标题】:Python bug - or my stupidity - EOL while scanning string literalPython 错误 - 或我的愚蠢 - 扫描字符串文字时 EOL
【发布时间】:2012-07-04 11:36:27
【问题描述】:

我看不到以下两行之间的显着差异。

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

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 错误/功能/奇怪,还是我遗漏了一些基本的东西?

【问题讨论】:

  • 只需使用''' 而不是"""
  • `\` 不会转义引号,因为它是转义的反斜杠。

标签: python string syntax-error eol


【解决方案1】:

最后四个引号

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

被解析为""",即字符串的结尾,后跟",即新字符串文字的开始。但是,这个新的文字永远不会完成。简单例子:

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

如果您想避免此问题,请将""" 替换为r' 或转义"

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

【讨论】:

    【解决方案2】:

    您的最后 4 个引号被评估为 "" &amp; "",而不是您期望它被评估为 " &amp; """

    【讨论】:

    • 其实解析为""",然后是"
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多