Python 2.7.3 IndentationError:期望一个缩进块 - 无法找到错误

时间:2013-05-14 00:04:59

标签: python indentation

我是python的新手,并尝试在Coursera数据科学课程上提交我的硬件。环境中有运行Python 2.7.3的VM,我试图运行的文件tweet_sentiment.py中包含以下脚本:

import sys
import json

def hw():
    print 'Hello, world!'

def lines(fp):
    print str(len(fp.readlines()))

def main():
    sent_file = open(sys.argv[1])
    tweet_file = open(sys.argv[2])
    # hw()
    # lines(sent_file)
    # lines(tweet_file)

    myfile = open(sys.argv[1], 'r')
    lines = myfile.readlines()
    mydict = {}
    for line in lines:
    key, value = line.split("\t")
        mydict[key] = int(value)

    twit_file = open(sys.argv[2], 'r')
    twit_lines = twit_file.readlines()

    mylist = []
    for line in twit_lines:
    mylist.append(json.loads(line))

    for listik in mylist:
    twit_value = 0
    twit_text = listik["text"]
    twit_words = twit_text.split()
    for word in twit_words:
        if word in mydict:
        twit_value =  twit_value + 1
    print float(twit_value)


if __name__ == '__main__':
    main()

运行$ python tweet_sentiment.py时出现以下错误:

    File "tweet_sentiment.py", line 25
    key, value = line.split("\t")
      ^
IndentationError: expected an indented block

感谢任何提示! 塞吉

6 个答案:

答案 0 :(得分:6)

小心!您正在混合制表符和空格以进行缩进。

通常,标签显示为8个空格的等效项。因此,当使用4个空格的常规练习时,它看起来像<2>级别的缩进,但实际上只有一个。

当我在编辑器中检查你的代码时,我可以看到你至少有两个地方。用4个空格替换这些标签。

答案 1 :(得分:3)

正如它所说,你有一个缩进错误。第25行应更正为:

def main():

...

    for line in lines:
        key, value = line.split("\t")
        mydict[key] = int(value)

答案 2 :(得分:1)

您必须在for阻止后缩进该行。您的代码应如下所示:

for line in lines:
    key, value = line.split("\t")
    mydict[key] = int(value)

答案 3 :(得分:1)

您的代码必须如下:

for line in lines:
    key, value = line.split("\t")
    mydict[key] = int(value)

对于其他所有人来说都是一样的。

答案 4 :(得分:0)

尝试:

import sys
import json

def hw():
    print 'Hello, world!'

def lines(fp):
    print str(len(fp.readlines()))

def main():
    sent_file = open(sys.argv[1])
    tweet_file = open(sys.argv[2])
    # hw()
    # lines(sent_file)
    # lines(tweet_file)

    myfile = open(sys.argv[1], 'r')
    lines = myfile.readlines()
    mydict = {}
    for line in lines:
        key, value = line.split("\t")
        mydict[key] = int(value)

    twit_file = open(sys.argv[2], 'r')
    twit_lines = twit_file.readlines()

    mylist = []
    for line in twit_lines:
        mylist.append(json.loads(line))

    for listik in mylist:
        twit_value = 0
        twit_text = listik["text"]
        twit_words = twit_text.split()
        for word in twit_words:
            if word in mydict:
            twit_value =  twit_value + 1
            print float(twit_value)


if __name__ == '__main__':
    main()

for语句的缩进搞砸了。 for块必须缩进。此外,如前所述,如果混合制表符和空格,Python将抛出错误。使用所有空格(用4个空格替换每个标签)或所有标签(用标签替换每4个空格)。

答案 5 :(得分:0)

使用vim打开它。然后输入命令:retab 然后它显示该行未正确缩进。