这是我在python中的脚本,我得到了这样的错误:
File "overlap.py", line 5
for line in infile:
^
IndentationError: expected an indented block
我无法弄清楚错误,输入是从yelp下载的json文件。脚本是用vim编写的,我一次又一次地检查缩进,这里似乎没什么不对。 代码如下:
import json
def cal_overlap(filename = "yelp_academic_dataset_review.json"):
with open(filename, 'rb') as infile:
for line in infile:
data = json.loads(line)
buz = data["business_id"]
user_id = data["user_id"]
if user_id in result:
if buz not in result[user_id]:
result[user_id].append(buz)
else:
result[user_id] = []
result[user_id].append(buz)
return result
def plot(res):
s = 0
count = 0
x = []
y = []
for key in res:
count += 1
s += len(res[key])
return float(s) / count
def main():
res = cal_overlap()
print plot(res)
if __name__ == '__main__':
main()
答案 0 :(得分:2)
看起来你在缩进中混合制表符和空格。这可能是因为缩进看起来对你而言,而不是解释者。
坚持使用所有空格进行缩进。
编辑:
如果您在python脚本中使用shebang,则可以指定参数-tt
以检查缩进中是否使用了制表符和空格的混合。
E.g。
#!/usr/bin/env python -tt
答案 1 :(得分:0)
我在for line in infile:
看不到问题,但你的倒数第二行错了:
if __name__ = '__main__':
需要阅读
if __name__ == '__main__':
我修好了,模块编译得很好。
答案 2 :(得分:0)
也许你的代码中有多个标签和空格?只需使用所有空格进行缩进,否则会出现一些奇怪的错误。