如何从包含多行JSON的JSON文件中的select对象创建python字典(key:value)
我有一个包含多行JSON的文件,如下所示如何从包含多行JSON的JSON文件中的select对象创建python字典(key:value),python,json,dictionary,objectpath,Python,Json,Dictionary,Objectpath,我有一个包含多行JSON的文件,如下所示 {"status str":null,"id":563221, "filter":"low","text" : "Grass is green"} {"status str":null,"id":612835, "filter":"high","text" : "Textual blue"} 我想要的输出应该只显示ID号和“Grass is green”作为[key:value]对,就像Python中的字典一样: 563221:“草是绿色的” 6128
{"status str":null,"id":563221, "filter":"low","text" : "Grass is green"}
{"status str":null,"id":612835, "filter":"high","text" : "Textual blue"}
我想要的输出应该只显示ID号和“Grass is green”作为[key:value]对,就像Python中的字典一样:
563221:“草是绿色的”
612835:“文本蓝色”
我目前正在使用ObjectPath进行查询。使用元组,我可以输出所有数据,但不能选择数据的部分。下面是我正在使用的代码
read_data = []
with open(fileName, 'r') as file_to_read:
for line in filetoread:
json_tree = objectpath.Tree(read_data)
dict = {tuple(json_tree.execute('$.id')) : tuple(json_tree.execute('$.text'))}
line = next(filetoread)
return dict
你差点就成功了。您需要首先使用函数反序列化json,然后将其传递到
objectpath.Tree
例如:
import json
import objectpath
data = [
'{"status str":null,"id":563221, "filter":"low","text" : "Grass is green"}',
'{"status str":null,"id":612835, "filter":"high","text" : "Textual blue"}'
]
for line in data:
jt = objectpath.Tree(json.loads(line))
d = {jt.execute('$.id') : jt.execute('$.text')}
print(d)
导致
{563221: 'Grass is green'}
{612835: 'Textual blue'}
命名变量dict
不是一个好主意,因为您将重写python内置类dict
将此应用于代码会导致
read_data = []
with open(fileName, 'r') as file_to_read:
for line in file_to_read:
json_tree = objectpath.Tree(json.loads(line))
read_data.append({json_tree.execute('$.id') : json_tree.execute('$.text')})
print(read_data)
我认为没有必要使用objectpath。多亏了json包,您可以通过非常简单的方式完成这项工作 data.json的内容:
{"status str":null,"id":563221, "filter":"low","text" : "Grass is green"}
{"status str":null,"id":612835, "filter":"high","text" : "Textual blue"}
代码:
输出:
{563221: 'Grass is green'}
{612835: 'Textual blue'}
您应该使用json库将文件的每一行转换为json,然后轻松提取所需的数据
import json
dict = {}
with open(fileName, 'r') as file_to_read:
for line in filetoread:
json_line = json.loads(line)
dict[json_line['id']] = json_line['text']
return dict
loads(json_字符串)将json_字符串中的字符串转换为json
import json
dict = {}
with open(fileName, 'r') as file_to_read:
for line in filetoread:
json_line = json.loads(line)
dict[json_line['id']] = json_line['text']
return dict