如何读取由新行分隔的多个json对象的json文件?

时间:2017-05-02 09:09:16

标签: python json pandas dataframe

我想读取一个json文件,其中每行包含一个新的json对象。

文件如下所示 -

{'P':'a1','D':'b1','T':'c1'}
{'P':'a2','D':'b2','T':'c2'}
{'P':'a3','D':'b3','T':'c3'}
{'P':'a4','D':'b4','T':'c4'}

我正在尝试阅读此文件,如下所示 -

print pd.read_json("sample.json", lines = True)

我面临异常 -

ValueError: Expected object or value

实际上这个sample.json文件大约是240mb。此文件的格式仅限于此。它的每一行包含一个新的json对象,我想使用 python pandas 读取此文件。

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中所说,它并不是真正的JSON。您可以使用ast.literal_eval()

import pandas as pd
import ast

with open('sample.json') as f:
    content = f.readlines()

pd.DataFrame([ast.literal_eval(line) for line in content])

或用双打代替单引号:

import pandas as pd
import json

with open('sample.json') as f:
    content = f.readlines()

pd.DataFrame([json.loads(line.replace("'", '"')) for line in content])