使用Python从文本文件解析多个json对象

2024-10-01 09:40:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.json文件,其中每一行都是一个对象。例如,前两行是:

{"review_id":"x7mDIiDB3jEiPGPHOmDzyw","user_id":"msQe1u7Z_XuqjGoqhB0J5g","business_id": ...}

{"review_id":"dDl8zu1vWPdKGihJrwQbpw","user_id":"msQe1u7Z_XuqjGoqhB0J5g","business_id": ...}

我尝试使用ijson lib进行如下处理:

^{pr2}$

但是,我得到了一个错误:

JSONError: Additional data

它似乎是由于多个对象我收到这样的错误。在

在Jupyter中分析这种Json文件的推荐方法是什么?在

提前谢谢你


Tags: 文件对象idjsonlib错误businessreview
3条回答

如果这是完整的文件,则文件格式不正确。在大括号之间必须有一个逗号,它应该以方括号开始和结束。像这样:[{...},{...}]。对于您的数据,它看起来像:

[{"review_id":"x7mDIiDB3jEiPGPHOmDzyw","user_id":"msQe1u7Z_XuqjGoqhB0J5g","business_id": ...},
{"review_id":"dDl8zu1vWPdKGihJrwQbpw","user_id":"msQe1u7Z_XuqjGoqhB0J5g","business_id": ...}]

下面是一些如何清理文件的代码:

^{pr2}$

为了正确地读取json文件,还可以考虑使用pandas库(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html)。在

import pandas as pd

#get a pandas dataframe object from json file
df = pd.read_json("path/to/your/filename.json")

如果您不熟悉pandas,这里有一个快速入门,如何使用dataframe对象:

df.head() #gives you the first rows of the dataframe
df["review_id"] # gives you the column review_id as a vector
df.iloc[1,:] # gives you the complete row with index 1
df.iloc[1,2] # gives you the item in row with index 1 and column with index 2 

你的文件中有多行,所以它抛出错误

import json

with open(filename, 'r') as f:
    lines = f.readlines()
    first = json.loads(lines[0])
    second = json.loads(lines[1])

这样可以抓住两条线并正确地加载它们

虽然它本身的每一行都是有效的JSON,但文件作为一个整体却不是。因此,您不能一次解析它,您必须遍历每一行并将其解析为一个对象。在

您可以将这些对象聚合到一个列表中,然后从中对数据执行任何操作:

import json
with open(filename, 'r') as f:
    object_list = []
    for line in f.readlines():
        object_list.append(json.loads(line))
    # object_list will contain all of your file's data

你可以把它当作一种列表理解,让它更像Python:

^{pr2}$

相关问题 更多 >