python - 如何在 Python 中提取多个 JSON 项?
问题描述
我已经研究了几个小时了,但不知道如何让它工作。我有一个 JSON 数据文件,每个项目包含三个类别:deck、description 和 name。我正在尝试为每个项目 0 - 99 绘制“名称”值,并将该数据保存到文本文件中。
我一辈子都想不出我应该怎么做。我很容易加载数据,我可以用这个打印出一个单独的值:
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 新手,所以如果我忽略了一些非常明显的东西。
解决方案
你已经稍微偏离了,你需要做的是迭代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
推荐阅读
- xml - Log4j2 环境变量查找机制不适用于“类型”属性
- django - UML 关联类和 OOP 语言
- php - 在 mysql 服务器上使用 php 读取/上传 .csv 文件的问题
- rust - 修改未在该结构的 Vec 上循环实现复制特征的结构
- c# - Rx.Net 内存泄漏
- python - 无法将时间戳插入 Postgresql psycopg2
- verilog - 为什么我的输出信号有 2 个时钟周期延迟?
- python - pip 和 !pip 之间的实际区别
- excel - Range 类的排序方法仅在某些访问网络文件的 PC 上失败
- sas - 修改 SAS XML 映射文件中的数据类型