如何在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
相关产品推荐
相关产品推荐

