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(':') ^ IndentationError: expected an indented block

4

5 回答 5

52

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

要解决此问题,请单击编辑器底部的“Tab Size”,然后选择“Convert Indentation to Tabs”。

于 2012-07-22T17:08:05.263 回答
5

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

于 2012-04-05T02:48:01.310 回答
3

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

  1. 使用可以显示控制字符的编辑器(例如viwith set list)。
  2. 使用十六进制转储程序,例如od -xcb.
  3. 只需删除该行开头的空白并重新插入(可能还需要检查前一行)。
于 2012-04-05T02:49:31.077 回答
1

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

sublime-text-2-view-whitespace-characters

于 2018-02-13T17:37:19.800 回答
0

试试 Editra - www.editra.org

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

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

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

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

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

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

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

于 2015-04-05T14:02:49.060 回答