"期望一个缩进的块"这是我无法弄清楚的

时间:2014-11-29 21:05:23

标签: python json

这是我在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()

3 个答案:

答案 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)

也许你的代码中有多个标签和空格?只需使用所有空格进行缩进,否则会出现一些奇怪的错误。