Python读取JSON文件提取首发球员姓名列表时出现TypeError错误的技术咨询
解决从JSON提取球员姓名时的TypeError问题
你的错误根源在于遍历了整个JSON字典的键名,而不是目标的球队数据列表。当你写for item in data时,data是解析后的完整JSON字典,这个循环会依次取出字典的键(比如"get"、"parameters"、"response"这些字符串),所以item是字符串类型,尝试用item['startXI']自然会抛出TypeError: string indices must be integers——因为字符串只能用整数来索引位置,不能用字符串键。
正确解决方案
你需要先定位到data['response'],这个列表里的两个元素分别是主队和客队的阵容数据。然后分别遍历它们的startXI列表,每个startXI元素里的player对象才包含你要的name字段。
修正后的代码(列表推导式写法,简洁高效)
import json with open("Files/lineups.json", 'r') as f: data = json.load(f) # 提取主队(response[0])的首发球员姓名 home_lineup = [player['player']['name'] for player in data['response'][0]['startXI']] # 提取客队(response[1])的首发球员姓名 away_lineup = [player['player']['name'] for player in data['response'][1]['startXI']] print("主队首发:", home_lineup) print("客队首发:", away_lineup)
如果你更喜欢普通循环写法
import json with open("Files/lineups.json", 'r') as f: data = json.load(f) home_lineup = [] # 遍历主队首发列表 for player_entry in data['response'][0]['startXI']: home_lineup.append(player_entry['player']['name']) away_lineup = [] # 遍历客队首发列表 for player_entry in data['response'][1]['startXI']: away_lineup.append(player_entry['player']['name']) print("主队首发:", home_lineup) print("客队首发:", away_lineup)
代码说明
data['response'][0]对应JSON结构中第一支球队(Gazişehir Gaziantep)的完整数据,data['response'][1]对应第二支球队(Galatasaray)- 每个
startXI的元素是一个字典,里面的player字段才包含球员的姓名信息,所以需要用player_entry['player']['name']来提取
内容的提问来源于stack exchange,提问作者niko
相关产品推荐
相关产品推荐

