【发布时间】:2022-01-06 03:40:10
【问题描述】:
我有一个 JSON Lines 文件,我想在 Python 中将其读取为字符串。该文件包含多个这种格式的 JSON 对象:
{"Data1": "Value1"}
{"Data2": "Value2"}
{"Data3": "Value3"}
我在 Python 中尝试了以下代码,但它返回了错误。我能够使用lines = [] 将文件加载为字典列表,但显然它不适用于字符串。如何将整个文件读取为字符串?
import json
lines = ''
with open('file.json', 'r') as f:
for line in f:
lines.append(json.loads(line))
【问题讨论】:
-
请在您的问题中分享
links.jl(或至少是其中的相关部分)的内容。 -
你可以试试
f.read() -
您能用您自己的话解释一下您认为
json.loads()做了什么吗?为什么要尝试加载单行 JSON(这应该会失败,因为单行不一定是语法有效的 JSON),然后将结果对象附加到字符串?为什么不直接使用readlines()读取整个文件,然后在结果字符串上使用json.loads()将其序列化为Python 数据结构?我真的不清楚你从哪里得到这种方法应该起作用的想法 - 你可以链接到你在这里尝试的示例或文档吗? -
然后加载一次字符串,例如:
json_str=‘[‘ + f.read().replace(‘\n’, ‘,\n’) + ‘]’; json.loads(json_str) -
@esqew 很好,他提到它是 jsonl 格式,其中每一行基本上都是有效的地图类型。我的意思是它作为一个整体不是有效的 jaon,因为大概文件中没有左大括号 []。