【问题标题】:SyntaxError: unexpected character after line continuation characterSyntaxError:行继续字符后出现意外字符
【发布时间】:2016-08-08 01:22:21
【问题描述】:

我正在使用 doctest 测试代码,我想在测试前这样评论:

Tests:
>>> part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\    #False, 1, 0
    ('Ana', 'Toquio', 21098, '06-12', 1182),\
    ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])
    [2, 1]

问题是当我在 shell 中运行代码时,它给了我一个 synthax 错误:

File "/home/user/Desktop/file.py", line 44, in __main__.part
Failed example:
    part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\     #False, 1, 0
Exception raised:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/doctest.py", line 1315, in __run
        compileflags, 1) in test.globs
      File "<doctest __main__.part[2]>", line 1
        part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\     #False, 1, 0
                                                                                   ^
    SyntaxError: unexpected character after line continuation character

【问题讨论】:

    标签: python syntax-error


    【解决方案1】:

    您不能将 anything 放在续行符 \ 之后。反斜杠后有 cmets:

    ... \     #False, 1, 0
    

    去掉注释,换行要直接跟在\后面:

    part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\
        ('Ana', 'Toquio', 21098, '06-12', 1182),\
        ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])\
        [2, 1]
    

    注意part(..) 调用之后的额外\,以确保[2, 1] 切片是其中的一部分!请参阅参考文档的Explicit line joining section

    以反斜杠结尾的行不能带有注释。 [...] 反斜杠在字符串文字之外的其他地方是非法的。

    但是,您不需要在括号内使用续行符,逻辑行会自动扩展,直到所有括号和括号都关闭:

    part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),    # False, 1, 0
          ('Ana', 'Toquio', 21098, '06-12', 1182),
          ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])[2, 1]
    

    可以在依赖括号扩展逻辑行时包含 cmets。

    来自Implicit line joining section

    括号、方括号或花括号中的表达式可以在多个物理行上拆分,而无需使用反斜杠。 [...] 隐式连续行可以携带 cmets。

    【讨论】:

    • 但是如果我删除了反斜杠 () 这个错误同时出现:SyntaxError: unexpected EOF while parsing
    • @ini_9:我的答案中的代码没有这样的语法错误。看来您在某处也删除了 )]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多