在Python中加载和parsing带有多个JSON对象的JSON文件
我想在Python中加载和parsingJSON文件。 但我卡住试图加载文件:
import json json_data = open('file') data = json.load(json_data)
产量:
ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)
我看着18.2。 json
– Python文档中的JSON编码器和解码器 ,但是阅读这个看起来很糟糕的文档让人感到沮丧。
你有一个JSON行格式的文本文件 。 你需要逐行parsing你的文件:
import json data = [] with open('file') as f: for line in f: data.append(json.loads(line))
每行都包含有效的JSON,但作为一个整体,它不是有效的JSON值,因为没有顶级列表或对象定义。
请注意,由于该文件每行包含JSON,因此您可以省去尝试一次parsing所有内容的麻烦,或者找出stream式JSONparsing器。 现在,您可以select分别处理每条生产线,然后再转到下一个步骤,从而节省stream程中的内存。 你可能不想把每个结果附加到一个列表中, 然后处理所有的东西,如果你的文件真的很大的话。
如果你有一个包含个别JSON对象的文件,并且在它们之间有定界符,请使用如何使用'json'模块一次读入一个JSON对象? 使用缓冲方法parsing出单个对象。
这是格式不正确。 每行有一个JSON对象,但它们不包含在较大的数据结构(即数组)中。 您可能需要重新格式化它,以便以每行结尾处的逗号开始,并以行结尾,或逐行parsing它作为单独的字典。
对于这个问题的绊脚石:python jsonlines
库(比这个问题年轻得多)优雅。 每行处理一个json文件的文件。 请参阅https://jsonlines.readthedocs.io/