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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:02:28