Python调用1secmail接口报TypeError: list indices must be integers or slices怎么办
错误原因
接口返回的响应内容是由邮件字典组成的列表,你调用r.json()得到的raw变量为列表类型,列表仅支持整数下标或切片作为索引,你直接传入字符串"id"访问自然触发类型错误。
解决方案
场景1:提取所有邮件的id
使用列表推导式遍历列表,取出每个邮件字典中的id值:
import requests url = 'https://www.1secmail.com/api/v1/?action=getMessages&login=Demo&domain=1secmail.com' r = requests.get(url) # 建议先加请求状态校验,避免接口报错后后续逻辑异常 r.raise_for_status() raw = r.json() mail_id_list = [item["id"] for item in raw] print(mail_id_list) # 对应你的响应示例输出为 [69, 68]
场景2:提取最新一封邮件的id
直接访问列表第一个元素的id属性即可,注意先判断列表非空避免无邮件时触发索引错误:
import requests url = 'https://www.1secmail.com/api/v1/?action=getMessages&login=Demo&domain=1secmail.com' r = requests.get(url) r.raise_for_status() raw = r.json() if raw: latest_mail_id = raw[0]["id"] print(latest_mail_id) # 对应你的响应示例输出为 69
内容的提问来源于stack exchange,提问作者Jonah Svoboda
相关产品推荐
相关产品推荐

