首页 > 解决方案 > 如何在 Python 中提取多个 JSON 项?

问题描述

我已经研究了几个小时了,但不知道如何让它工作。我有一个 JSON 数据文件,每个项目包含三个类别:deck、description 和 name。我正在尝试为每个项目 0 - 99 绘制“名称”值,并将该数据保存到文本文件中。

json数据的格式

我一辈子都想不出我应该怎么做。我很容易加载数据,我可以用这个打印出一个单独的值:


with open('gbdata1.json', 'r') as gbdata1:
    data = json.load(gbdata1)

print(data['results'][0]['name'])

我尝试将我需要的数字列表传递给它:

 names = [0, 1, 2, 3, 4, 5]

   for item in data['results'][names]['name']:
       print(item)

但它说:

TypeError:列表索引必须是整数或切片,而不是列表

所以我尝试创建一个变量,然后使用 forloop 和 += 运算符递增变量,但这也不起作用。我是一个 JSON 新手,所以如果我忽略了一些非常明显的东西。

标签: pythonjson

解决方案


你已经稍微偏离了,你需要做的是迭代names列表并将你的硬编码替换print(data['results'][0]['name'])为迭代变量:

names = ['1', '2', '3', '4', '5']
for n in names:
    print(data['results'][n]['name']) # You can access other attributes here

另请注意,JSON 键总是string,因此您names = [1, 2, 3, 4]将无法按原样工作,因为它具有整数值,您可以将这些元素转换为字符串,也可以在访问 for 循环中的 json 之前将它们转换为字符串:

for n in names:
    print(data['results'][str(n)]['name']) # You can access other attributes here

推荐阅读