在Python中访问字典对象转储中的项

2024-06-25 23:31:44 发布

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

我从我们的客户那里得到一个奇怪的数据集。它是一个.json文件,但内部如下图所示

{"a":"aaa","b":"bbb","text":"hello"}
{"a":"aaa","b":"bbb","text":"hi"}
{"a":"aaa","b":"bbb","text":"hihi"}

正如您所注意到的,这只是dictionary对象的转储。它既不是列表(对象之间没有[]和逗号分隔符),也不是适当的JSON,尽管文件扩展名是.json。所以我真的很困惑如何阅读这个文件

我所关心的就是从每个dictionary对象读取所有的text


Tags: 文件数据对象textjsonhello列表客户
3条回答

您可以逐行读取它,并将这些行转换为JSON对象,并在您的案例中提取所需的数据

您可以执行以下操作:

import json
lines = open("file.txt").readlines()
for line in lines:
  dictionary = json.loads(line)
  print(dictionary["text"])

这个“奇怪的数据集”实际上是一种基于JSON的现有格式,称为JSONL

正如@user655321所说,您可以解析每一行。下面是一个更完整的示例,完整的数据集位于dictsdataset列表中:

import json

dataset = []
with open("my_file.json") as file:
    for line in file:
        dataset.append(json.loads(line))
In [51]: [json.loads(i)["text"] for i in open("file.json").readlines()]
Out[51]: ['hello', 'hi', 'hihi']

使用列表理解,这更容易

相关问题 更多 >