我是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
感谢任何提示! 塞吉
答案 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
然后它显示该行未正确缩进。