是否有方法从大型文本文件中只提取json数据的一个子集?

2024-09-27 00:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望从一个大的json文本文件中提取“name”字段,并能够将它们存储在另一个文件中,以备以后使用,但我将获得我以前的json文件中的每一条数据,尽管只是稍微修改了一下。如何使我只获取json文件中“name”:字段后面的数据

我试过了

names = []

with open('./out.json', 'r') as f:
    data = json.load(f)

for name in data:
    names.append(data[name])

with open('./names.json','w') as f:
    for name in names:
        f.write('%s\r\n' % name)

我得到了确切的json文件,没有格式,所有东西前面都有u’,很可能来自json.load(f),但我不知道如何解决这个问题

如果有必要,我的文本文件的格式如下:

{
"array":[
{
  "name": "Seranul",
  "id": 5,
  "type": "Paladin",
  "itemLevel": 414,
  "icon": "Paladin-Holy",
  "total": 11107150,
  "activeTime": 2205387,
  "activeTimeReduced": 2205387
},
{
  "name": "Contherious",
  "id": 9,
  "type": "Hunter",
  "itemLevel": 412,
  "icon": "Hunter-Marksmanship",
  "total": 51102811,
  "activeTime": 2637303,
  "activeTimeReduced": 2637303
},
{
  "name": "Unicorns",
  "id": 17,
  "type": "Priest",
  "itemLevel": null,
  "icon": "Priest",
  "total": 12252005,
  "activeTime": 1768883,
  "activeTimeReduced": 1761797
},
...
}
]}

我希望看到每个名称字段的相应数据,但我正在取回我的整个文档


Tags: 文件数据nameidjsondatanamestype
1条回答
网友
1楼 · 发布于 2024-09-27 00:21:41

您的代码似乎忽略了JSON数据的结构。具体地说,您正在迭代JSON字典中的键,它只是array,然后将值附加到names列表中。这将导致整个array属性被放入names变量中

以下是我认为您想要的:遍历array中的条目并将其导出到列表中,然后将其作为JSON导出到另一个文件中

import json


names = []

with open('./out.json', 'r') as f:
    data = json.load(f)

for entry in data["array"]:
    names.append(entry["name"])

with open('./names.json', 'w') as f:
    f.write(json.dumps(names))

这将导致names.json中出现以下JSON:

["Seranul", "Contherious", "Unicorns"]

相关问题 更多 >

    热门问题