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

在Python中访问字典对象转储中的项,python,json,dictionary,Python,Json,Dictionary,我从我们的客户那里得到一个奇怪的数据集。它是一个.json文件,但内部如下图所示 {"a":"aaa","b":"bbb","text":"hello"} {"a":"aaa","b":"bbb","text":"hi"} {"a":&qu

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

{"a":"aaa","b":"bbb","text":"hello"}
{"a":"aaa","b":"bbb","text":"hi"}
{"a":"aaa","b":"bbb","text":"hihi"}
正如您所注意到的,这只是dictionary对象的转储。虽然文件扩展名为.JSON,但它既不是对象之间的列表编号[]和逗号分隔符,也不是正确的JSON。所以我真的很困惑如何阅读这个文件


我所关心的是从每个dictionary对象读取所有文本键。

因为它不是一个单一的JSON文件,所以您可以逐行读取输入并独立地反序列化它们:

导入json 以fh格式打开“my_file.json”: 对于fh中的线路: json_obj=json.loadsline keys=json_obj.keys如“a”、“b”、“text” text\u val=json\u obj['text']例如,“你好”、“你好”或“你好”
这个奇怪的数据集实际上是一种基于JSON的现有格式,称为

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

导入json 数据集=[] 使用openmy_file.json作为文件: 对于文件中的行: dataset.appendjson.loadsline
您可以逐行读取,并将这些行转换为JSON对象,并提取案例中所需的数据文本

您可以执行以下操作:

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

通过\n拆分内容,然后使用json加载每个字典怎么样?比如:

import json

with open(your_file) as f:
    data = f.read()

my_dicts = []
for line in data.split():
    my_dicts.append(json.loads(line))

使用列表理解,更容易

实际的编程问题是什么?你有没有试过用中文读这个文件?它起作用了吗?若否,原因为何?等等…听起来像是,或者是一些特别的接近的东西。如果你想实现一些对任何输入都有效的东西,你必须知道它的格式是什么。我们可以从您显示的内容中猜出格式是什么,正如您可以猜出相同的格式一样正确,但是最好询问创建文件的人。
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))
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))