2

我是 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

感谢您的任何提示!谢尔盖

4

6 回答 6

5

当心!您正在混合使用制表符和空格进行缩进。

通常一个制表符显示为相当于 8 个空格。因此,当使用 4 个空格的常见做法时,它看起来像 2 级缩进,但实际上只有一个。

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

于 2013-05-14T00:10:12.290 回答
2

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

def main():

...

    for line in lines:
        key, value = line.split("\t")
        mydict[key] = int(value)
于 2013-05-14T00:07:50.093 回答
1

您必须在一个for块之后缩进该行。您的代码应如下所示:

for line in lines:
    key, value = line.split("\t")
    mydict[key] = int(value)
于 2013-05-14T00:07:49.360 回答
1

您的代码必须是这样的:

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

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

于 2013-05-14T00:08:57.523 回答
0

用来vim打开它。然后输入 commoand:retab 它然后显示行没有正确缩进。

于 2014-01-24T00:38:42.177 回答
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 个空格替换为一个制表符)。

于 2013-05-14T00:36:42.977 回答