如何调试Python中的缩进错误[重复]

问题描述 投票:0回答:5

我正在尝试编写我的第一个 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(':') ^ IndentationError:需要一个缩进块

python debugging indentation
5个回答
53
投票

我在使用 Sublime Text 2 时遇到了类似的问题。

要解决此问题,请单击编辑器底部的“制表符大小”,然后选择“将缩进转换为制表符”。


5
投票

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


3
投票

您可以在这里做很多事情:

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

1
投票

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

sublime-text-2-view-whitespace-characters


0
投票

尝试 Editra - www.editra.org

您的代码看起来不错,语法看起来不错...您的文本编辑器可能会产生错误。使用 Editra 检查您的文件以查看/检查缩进级别。

Editra 拯救了我的理智 - 在文本编辑器(包括带有 python 缩进插件的 Notepad++)中查看脚本时,我认为我的语法是正确的。但是,当我运行该脚本时,它每次都会抛出缩进错误。我终于在 Editra 中打开了脚本,我可以看到问题所在。 Notepad++ 和其他文本编辑器未显示正确的缩进/制表符/空格。 Editra 显示错误,例如意外的空格、制表符 - 我能够纠正这些。

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

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

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

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

希望这有帮助! 祝你好运。 str8箭头

© www.soinside.com 2019 - 2024. All rights reserved.