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

时间:2015-03-29 15:00:04

标签: python syntax-error

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

2 个答案:

答案 0 :(得分:1)

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

在代码上使用pep8flake8等检查器来查找并帮助您解决此类问题。 在运行这些检查程序时,您的代码通常不会产生任何错误。

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

答案 1 :(得分:0)

答案很愚蠢,在一份约100行的印刷声明中缺少结束括号!

不知何故,python语法解析器必须与缺少的括号混淆,并且以下某些'''用于注释掉不需要的旧代码。这就是为什么有时将错误放在注释掉的部分中。

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

不幸的是,IDLE和GEDIT都忽略了丢失的括号并且正确地看到'''删除了不需要的代码,所以我在寻找接近标记语法错误的地方的错误时误导。

感谢大家的评论。