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

我从我们的客户那里得到了一个奇怪的数据集。这是一个.json文件,但里面看起来像下面


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

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

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

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


我只关心text从每个字典对象中读取所有键。


喵喔喔
浏览 179回答 6
6回答

凤凰求蛊

这个“奇怪的数据集”实际上是一种基于 JSON 的现有格式,称为JSONL。正如@user655321 所说,您可以解析每一行。这是一个更完整的示例,其中包含 dicts 列表中可用的完整数据集dataset:import jsondataset = []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']使用列表理解,更容易

人到中年有点甜

您可以逐行阅读它,并将这些行转换为 JSON 对象,并text根据您的情况提取所需的数据。您可以执行以下操作:import jsonlines = open("file.txt").readlines()for line in lines:  dictionary = json.loads(line)  print(dictionary["text"])

慕哥6287543

由于它不是单个 JSON 文件,您可以逐行读取输入并独立反序列化它们:import jsonwith open('my_file.json') as fh:   for line in fh:       json_obj = json.loads(line)       keys = json_obj.keys() # eg, 'a', 'b', 'text'       text_val = json_obj['text'] # eg, 'hello', 'hi', or 'hihi'

守候你守候我

如何通过\n使用 json 加载每个字典来拆分内容?就像是:import jsonwith open(your_file) as f:     data = f.read() my_dicts = []for line in data.split():     my_dicts.append(json.loads(line))

慕码人2483693

import astwith open('my_file.json') as fh:     for line in fh:         try:             dict_data = ast.literal_eval(line)             assert isinstance(dict_data,dict)             ### Process Dictionary Data here or append to list to convert to list of dicts         except (SyntaxError, ValueError, AssertionError):             print('ERROR - {} is not a dictionary'.format(line))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python