如何在Python中调试缩进错误

16

我试图编写我的第一个Python脚本。这个脚本之前能够正常工作,但在稍微重构后,显然出现了缩进问题。我无法确定问题所在。解释器抱怨以下方法。有人可以指出问题吗?

def dataReceived(self, data):
    a = data.split(':')
    print a
    if len(a) > 1:
        command = a[0]
        content = a[1]

        msg = ""
        if command == "iam":
            self.name = content
            msg = self.name + " has joined"

        elif command == "msg":
            msg = self.name + ": " + content
            print msg

这个错误提示为:文件"python_server.py",第17行 a = data.split(':') ^ 缩进错误: 预计需要一个缩进块

5个回答

53
我在使用Sublime Text 2时遇到了类似的问题。要解决此问题,请单击编辑器底部的“Tab Size”,然后选择“将缩进转换为制表符”。

5
你开始使用一个文本编辑器,它允许你显示缩进,并且你变得一致地使用空格而不是制表符,并在编辑器中强制执行这一点。

2
是的,你说得对。我在另一个编辑器中打开了文件,缩进是不同的。Sublime Text 欺骗了我。谢谢。 - Nick
2
五年过去了,Sublime Text仍然没有解决这个问题。 - Mukherjee
我在Sublime中使用这些设置。非常有帮助。 "translate_tabs_to_spaces": true, "ensure_newline_at_eof_on_save": true, "trim_trailing_white_space_on_save": true - rosinghal
在Sublime Text中,您可以选择全部内容(Mac上为CMD-A),并且您可以通过视觉方式查看缩进的差异:制表符将显示为线条,而空格将显示为点。这是识别任何明显问题的快速方法。 - dkamins

3

这里有很多您可以做的事情:

  1. 使用可以显示控制字符的编辑器(例如带有 set listvi)。
  2. 使用十六进制转储程序,如 od -xcb
  3. 只需删除该行开头的空格并重新插入它(可能还要检查前面一行)。

1
如果您正在使用"Sublime Text 2"编辑器,那么我发现这个答案很有帮助 - 它详细介绍了如何打开空格字符并将制表符转换为空格。

sublime-text-2-view-whitespace-characters


0

尝试使用Editra - www.editra.org

你的代码看起来很好,语法似乎也没问题...但是你的文本编辑器可能会导致错误。使用Editra查看/检查缩进级别以解决问题。

Editra拯救了我的理智 - 我以为在包括带有Python缩进插件的记事本++在内的文本编辑器中查看脚本时,我已经正确地编写了语法。然而,每次运行脚本时,它都会抛出缩进错误。最后,我在Editra中打开了脚本,我才能看到问题所在。记事本++和其他文本编辑器没有显示正确的缩进/制表符/空格。Editra显示了错误,例如意外的空格、制表符,我可以进行更正。

Editra将自动缩进您的脚本[并显示其他文本编辑器可能不会显示的错误-制表符、空格]。

如果您有缩进错误,它将显示为蓝色下划线段;

如果您正在编写脚本[添加/删除行],Editra将自动缩进脚本。

**我建议您在Editra中打开脚本并进行编辑。

希望这可以帮助您!祝您好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接