猿问

如何将json文件转换为列表

我的 json 文件的内容是:


{'user': 'fgb59h', 'stars': 4.0, 'time': 1027296000}


{'user': 'bucho_ky', 'stars': 2.0, 'time': 1201305600}


{'user': 'redp944', 'stars': 4.0, 'time': 1118016000}

我想像这样转换它:


[

{"user": "fgb59h", "stars": 4.0, "time": 1027296000}


{"user": "bucho_ky", "stars": 2.0, "time": 1201305600}


{"user": "redp944", "stars": 4.0, "time": 1118016000}

]

我将单引号转换为双引号,如下所示:


with open('ep.json', 'r') as myfile:

    data=myfile.read()

obj = json.dumps(data)

json_ep = obj.replace("'", "\"")

但现在我需要将 json 文件包含在列表中。有没有办法做到这一点?


提前致谢!!


叮当猫咪
浏览 409回答 2
2回答

12345678_0001

您将无法使用json. 您必须先替换所有单引号,然后使用json.loads. 但是,您也可以使用ast以读取单引号 json,如下所示:import astfrom io import StringIOdata = """{'user': 'fgb59h', 'stars': 4.0, 'time': 1027296000}{'user': 'bucho_ky', 'stars': 2.0, 'time': 1201305600}{'user': 'redp944', 'stars': 4.0, 'time': 1118016000}"""records = list()for line in StringIO(data).readlines():    if not len(line.strip()): continue    data_dict = ast.literal_eval(line)    records.append(data_dict)print(records)哪个输出:[{'stars': 4.0, 'time': 1027296000, 'user': 'fgb59h'}, {'stars': 2.0, 'time': 1201305600, 'user': 'bucho_ky'}, {'stars': 4.0, 'time': 1118016000, 'user': 'redp944'}]

胡子哥哥

您可以阅读每一行,附加到一个列表,以后可以使用ast:提交Json.json:{'user': 'fgb59h', 'stars': 4.0, 'time': 1027296000}{'user': 'bucho_ky', 'stars': 2.0, 'time': 1201305600}{'user': 'redp944', 'stars': 4.0, 'time': 1118016000}因此:import jsonimport astres = []with open('commitJson.json', 'r') as fp:    for line in fp:        res.append(line.strip())print(json.dumps([ast.literal_eval(i) for i in res], indent = 4))输出:[    {        "user": "fgb59h",        "stars": 4.0,        "time": 1027296000    },    {        "user": "bucho_ky",        "stars": 2.0,        "time": 1201305600    },    {        "user": "redp944",        "stars": 4.0,        "time": 1118016000    }]短版:with open('commitJson.json', 'r') as fp:     print(json.dumps([ast.literal_eval(line.strip()) for line in fp], indent = 4))
随时随地看视频慕课网APP

相关分类

Python
我要回答