Python 与实际文本无关的奇怪语法错误

bizarre syntax error with Python unrelated to actual text

我在 Python 和 IDLE 3.4 中遇到奇怪的语法错误 我正在修改一些旧代码。大量的用'''注释掉 直到昨天,只要我能调试代码,一切都很好。 然后我对代码做了一个小改动,在一些旧代码中出现了语法错误,而这些旧代码在前 10 次运行中语法上没有问题。

elif 关键字中的 eli 显然有误。我删除并重新输入了 elif。没有变化。

这不是我没有处理的代码。所以我 # 注释掉了这一行。 现在 elif 关键字中的 el 显然是错误的。请注意,这现在在评论中!

我用'''屏蔽了整个文本 现在 ''' 中的第三个 ' 已成为语法错误。

我怀疑有非法字符未显示。我将整个程序文本复制到编辑器中。然后再次将其复制到 IDLE/Python.

的新实例

同样的问题。

今天我重新开始了整个过程。除了移动语法错误的位置(目前它在我通过添加大量 LF 创建的一些空文本的中间)之外,语法错误仍然存​​在,与程序文本完全无关。

在我看来,错误似乎出现在程序文本中的固定点上。

有什么想法吗?

编辑 - 我已经添加了代码。当我修改文本时,语法错误再次移动:

    if   VerificationType == 4 :  # I&E
         VerifTypecount4 += 1
         if AD : VT4defcount += 1
         elif Day14Missed : VT4d14count += 1
    elif VerificationType == 3 :
         VerifTypecount3 += 1
         if AD : VT3defcount += 1
         elif Day14Missed : VT3d14count += 1
    elif VerificationType == 2 :
         VerifTypecount2 += 1
         if AD : VT2defcount += 1
         elif Day14Missed : VT2d14count += 1 
    else :
         VerifTypecount1 += 1  # Catch all
         if AD : VT1defcount += 1
         elif Day14Missed : VT1d14count += 1

您继承的代码格式真的很糟糕。 (并且查看变量名称,它也可以进行一些重构,例如使用字典。)

在代码上使用像 pep8 or flake8 这样的检查器来查找并帮助您解决此类问题。 当您 运行 通过这些检查程序时,您的代码通常不应产生 任何 错误。

您甚至可以使用 autopep8 为您修复格式错误。

愚蠢的答案是在大约 100 行之前的打印语句中缺少右括号!

不知何故 python 语法分析器一定混淆了缺少的括号和下面的一些 ''' 被用来注释掉不需要的旧代码。这就是为什么有时错误被放置在注释掉的部分中的原因。

或者,解析器可能对括号对之间的距离设置了最大长度,超过此最大值后,它会发布语法错误。

不幸的是,IDLE 和 GEDIT 都忽略了缺少的括号并正确地看到了“”以清除不需要的代码,所以我误导了寻找接近语法错误标记位置的错误。

感谢大家的评论。