提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在解析一个看起来像这样的 JSON:
[{"acc":P1,"Lenght":855,..."MBDB-1":{"source_id":"2btp_A","regions":[[70,73],[231,234]],"content_fraction":0.033,"content_count":8},"MBDB-2":{...},"MDB-2":{...}},\
{"acc":P2,"Lenght":145,...,"MBDB-14":{...},...}]
而且我正在尝试生成一个字典,其中只包含我想要的信息(即"acc", "Lenght"
)以及以“MBDB”开头的键内的所有信息,无论之后是什么(实际的文件很大,有很多我并不真正需要的信息)。
对于前两个项目,这相当容易。 这是我得到的:
import json
my_dict= dict.fromkeys(['ID', 'MISSING','LENGHT'])
with open("...\mypath\Json1.json") as f:
data = json.loads(f.read())
for i in data:
if "acc" in i:
my_dict["ID"]=i["acc"]
但是我真的不知道如何将“MBDB-something”的每个值附加到MISSING
键。 据我了解,我不能使用startswith()
,因为我正在使用 dict (由json.loads()
生成)。
结果应该是这样的:
ID LENGHT source_id regions content_count
0 P1 855 2btp_A [[70,73],[231,234]] 8
1 P1 855 ... [...] #
2 P2 145 ... [...] #
所以我以后可以使用.explode
并对这些键保存的一些信息执行不同的操作。 我觉得我无法解决这个问题,所以欢迎提出任何建议! 编辑:我已将所需的输出编辑为所有“MBDB”键内不同键的内容。
由于键在 json 对象中是一致的,因此您可以根据找到的每个“MBDB”键在列表中插入一项。
# load data
with open("...\mypath\Json1.json") as f:
data = json.loads(f.read())
out = [] # final output
for d in data:
for k, v in d.items():
if "MBDB" in k:
out.append({
"ID": d["acc"],
"LENGTH": d["Lenght"],
"source_id": v["source_id"],
"regions": v["regions"],
"content_count": v["content_count"]
})
这里的最终输出将是一个 dict 列表。 您可以使用熊猫将其转换为数据帧。
df = pandas.DataFrame(out)
# output
ID LENGTH source_id regions content_count
0 P1 855 2btp_A [[70, 73], [231, 234]] 8
1 P1 855 2btp_B [[70, 73], [231, 234]] 8
2 P2 855 2btp_A [[70, 73], [231, 234]] 8
3 P2 855 2btp_B [[70, 73], [231, 234]] 8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.