Python提取API响应中所有country字段值报错问题排查
错误根因
接口返回的json_response['data']字段值是存储国家信息字典的列表,不是单层字典,所以直接用['country']字符串作为索引访问列表时,就会抛出TypeError: list indices must be integers or slices, not str错误。
你修改后加[0]能拿到第一个国家名称,是因为[0]是列表合法的整数索引,取到了列表内第一个字典元素,再读取该字典的country键就能拿到对应值,但这种写法仅访问了列表的单个元素,自然无法获取全部国家值。
正确实现代码
遍历data列表,逐个提取每个元素里的country字段即可拿到全量国家名称:
import requests response = requests.get("https://countriesnow.space/api/v0.1/countries") json_response = response.json() # 提取所有国家名称存入列表 all_country_names = [country_item['country'] for country_item in json_response['data']] # 打印结果校验 print(all_country_names)
校验使用说明
- 拿到
all_country_names列表后,做匹配校验时直接判断待校验文本是否存在于该列表即可,示例:is_match = target_text in all_country_names - 后续调试接口返回值时,可以先通过
type(字段值)确认目标字段的数据类型,打印字段首个元素确认内部结构,能快速定位这类索引类型错误。
内容的提问来源于stack exchange,提问作者vinoth kumar
相关产品推荐
相关产品推荐

