You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中提取多个JSON数据项,获取0-99项的name值并保存

解决JSON数据提取0-99项name的问题

嘿,我明白你折腾了好几个小时的困扰了!咱们先把问题拆解清楚,再一步步解决。

首先,你遇到的TypeError: list indices must be integers or slices, not list错误,原因很简单:列表不能用另一个列表当索引。你写的data['results'][names]里,names是一个列表,而Python列表只接受整数(比如[0])或者切片(比如[:100])来定位元素,所以这就触发了错误。

正确的解决方法

你的JSON数据里,data['results']是一个列表,每个元素都包含name字段。要提取前100项(0-99)的name,有几种简洁的方式:

方法1:用列表推导式(最简洁)

直接对results的前100个元素做遍历,提取每个元素的name:

import json

# 加载JSON数据
with open('gbdata1.json', 'r') as gbdata1:
    data = json.load(gbdata1)

# 提取0-99项的name(切片[:100]表示取从第0项到第99项)
names_list = [item['name'] for item in data['results'][:100]]

# 保存到文本文件,每行一个name
with open('extracted_names.txt', 'w') as output_file:
    for name in names_list:
        output_file.write(f"{name}\n")

方法2:用for循环逐个提取(更直观)

如果你习惯更直白的循环写法,也可以这样:

import json

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

names_list = []
# 循环0到99的索引
for i in range(100):
    # 避免数据不足100项时出错,先判断索引是否存在
    if i < len(data['results']):
        names_list.append(data['results'][i]['name'])

# 保存文件
with open('extracted_names.txt', 'w') as output_file:
    output_file.write('\n'.join(names_list))

额外提示:避免索引越界

如果你的JSON数据里results的元素数量不足100,直接用[:100]或者range(100)会触发索引错误吗?不会的!因为切片[:100]会自动取到列表的最后一项(如果列表长度小于100),而方法2里的if i < len(data['results'])也做了判断,这样代码更健壮。

现在你可以试试上面的代码,应该就能顺利提取并保存name值啦!

内容的提问来源于stack exchange,提问作者wingblaze01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:27