为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2023-03-08 17:26:08
我从我们的客户那里得到了一个奇怪的数据集。这是一个.json文件,但里面看起来像下面{"a":"aaa","b":"bbb","text":"hello"}{"a":"aaa","b":"bbb","text":"hi"}{"a":"aaa","b":"bbb","text":"hihi"}如您所见,这只是字典对象的转储。它既不是列表([]对象之间没有逗号分隔符)也不是适当的,JSON尽管文件扩展名为.json. 所以我真的很困惑如何阅读这个文件。我只关心text从每个字典对象中读取所有键。
查看完整描述

6 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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


正如@user655321 所说,您可以解析每一行。这是一个更完整的示例,其中包含 dicts 列表中可用的完整数据集dataset:


import json


dataset = []

with open("my_file.json") as file:

    for line in file:

        dataset.append(json.loads(line))


查看完整回答
反对 回复 2023-03-08
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

In [51]: [json.loads(i)["text"] for i in open("file.json").readlines()]

Out[51]: ['hello', 'hi', 'hihi']

使用列表理解,更容易


查看完整回答
反对 回复 2023-03-08
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您可以逐行阅读它,并将这些行转换为 JSON 对象,并text根据您的情况提取所需的数据。


您可以执行以下操作:


import json

lines = open("file.txt").readlines()

for line in lines:

  dictionary = json.loads(line)

  print(dictionary["text"])


查看完整回答
反对 回复 2023-03-08
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

由于它不是单个 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'


查看完整回答
反对 回复 2023-03-08
?
守候你守候我

TA贡献1802条经验 获得超10个赞

如何通过\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))


查看完整回答
反对 回复 2023-03-08
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

import ast

with 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))


查看完整回答
反对 回复 2023-03-08
  • 6 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号