Python解析API返回的JSON时仅输出玩家姓名首字符,求助
问题分析与修正方案
你的代码存在三个核心问题:
- 遍历对象错误:
data["games"][0]["offers"][0]["player"]是单个玩家的名字字符串,遍历字符串会逐个取出字符,再加上循环里的break,自然只返回首字符。 - 未定义变量:代码里的
offers和player都没提前定义,实际运行会直接抛出NameError。 - 逻辑范围太窄:你只取了第一个比赛的第一个offer,没有遍历所有比赛和offer,根本拿不到所有参与者。
修正后的代码(获取所有玩家全名)
import requests url = "https://betkarma.com/api/propsComparison?startDate=2023-10-17&endDate=2023-10-23&league=nfl" response = requests.get(url) data = response.json() # 遍历所有比赛 for game in data["games"]: # 遍历每场比赛下的所有offer for offer in game["offers"]: # 直接取出玩家全名并打印 print(offer["player"])
进阶:获取去重后的玩家名单
如果接口返回的玩家有重复,可以用集合自动去重:
import requests url = "https://betkarma.com/api/propsComparison?startDate=2023-10-17&endDate=2023-10-23&league=nfl" response = requests.get(url) data = response.json() unique_players = set() for game in data["games"]: for offer in game["offers"]: unique_players.add(offer["player"]) # 打印去重后的所有玩家 for player in unique_players: print(player)
内容的提问来源于stack exchange,提问作者outschool
相关产品推荐
相关产品推荐

