如何在python中调试缩进错误

时间:2012-04-05 02:45:38

标签: python debugging indentation

我正在尝试编写我的第一个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:预期缩进块

5 个答案:

答案 0 :(得分:47)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

尝试使用Editra - www.editra.org

您的代码看起来很好,语法似乎很好......您的文本编辑器可能正在创建您的错误。使用Editra查看文件以查看/查看缩进级别。

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

Editra将自动缩进您的脚本[并显示错误-tabs,space-可能不会显示在其他文本编辑器中]。

  

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

     
    

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

  

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

希望这有帮助! 祝你好运。 str8arrow

答案 4 :(得分:0)

如果您正在使用" Sublime Text 2"编辑器,然后我发现这个答案很有帮助 - 它详细说明了如何打开空格字符并将标签转换为空格

sublime-text-2-view-whitespace-characters