0

我想分块解析一个巨大的 json 文件。我想使用它的大块而不加载整个东西。数据可以在这里找到 http://jmcauley.ucsd.edu/data/amazon/

当我使用 ijson 执行此操作时,出现JSONError: Additional data. 有没有办法做到这一点?

我的代码:##产生附加数据错误

import pandas as pd


file = open('Books_5.json',"r") ##Books_5.json is the 5-core small dataset
objects = ijson.items(file, 'meta.data.item')
reviews = (o for o in objects if o['type']=='reviewText')
for review in reviews : print(review)

这确实有效,但速度很慢:

path='Books_5.json'
def parse(path):
  g = open(path, 'rb')
  for l in g:
    yield eval(l)
def getDF(path):
  i = 0
  df = {}
  for d in parse(path):
    df[i] = d
    i += 1
  return pd.DataFrame.from_dict(df, orient='index')

df = getDF(path)
df.info()

代码的结果

4

1 回答 1

0

听起来 JSON 数据中有不止一个顶级对象,这是 JSON 标准不支持的。但是 ijson 在使用该 multiple_values=True选项时仍然支持这一点(例如,ijson.items(file, 'meta.data.item', multiple_values=True).

于 2020-03-27T05:36:27.533 回答