python - API调用不断给出keyerror?不和谐蟒蛇
问题描述
我一直试图让这个变量列表工作,但它一直给我 keyerror 我试过改变变量等但不会工作
@client.command()
async def info(ctx):
url = ('https://randomuser.me/api/')
response = requests.get(url)
title = response.json()["title"]
first = response.json()["first"]
last = response.json()["last"]
number = response.json()["number"]
street = response.json()["name"]
city = response.json()["city"]
state = response.json()["state"]
postcode = response.json()["postcode"]
country = response.json()["country"]
phone = response.json()["phone"]
age = response.json()["age"]
dob = response.json()["date"]
gender = response.json()["gender"]
username = response.json()["username"]
password = response.json()["password"]
image = response.json()["large"]
embed = discord.Embed(title="Fake Info Generator", description=f"**Name:** '{title}', '{first}' '{last}'\n**Address:** '{number}' '{street}', '{city}', '{state}', '{postcode}', '{country}'\n**Phone:** '{phone}'\n**Age:** '{age}', '{dob}'\n**Gender:** '{gender}'", color=18321)
embed.set_footer(text="Random Info")
embed.set_image(url=f"'{image}'")
await ctx.send(embed=embed)
我已经尝试过将变量更改为这样的东西,但仍然无法正常工作
title = response.json()["name"][0]["title"]
解决方案
仅仅是因为这就是 JSON 读取的工作方式。
您需要指定要读取的值的整个“路径”。你不能只是得到response.json()["title"]
,因为响应不是这样格式化的。
响应 JSON 格式如下:
{
"results":[
{
"gender":"female",
"name":{
"title":"Madame",
"first":"Germaine",
"last":"Rey"
},
...
}
],
...
}
为了能够阅读title
,您需要阅读results
索引 0 处的数组内容(因为您只关心第一个结果)然后检查名称,最后检查标题,所以它看起来像这样:response.json()["results"][0]["name"]["title"]
推荐阅读
- c - 将矩阵表示为特定范围内的唯一标量数
- python - 为什么我在导入 win32.client 时出现属性错误
- javascript - create-react-app 命令最后失败,errno -4058
- windows - TCL\Expect:: spawn ssh 显示“系统找不到指定的文件”错误
- python - 在 python 中使用它们的校验和并行重命名多个文件(使用多处理)
- javascript - 在 NodeJS 中将 Proto 文件导入另一个 ProtoFile
- visual-studio-code - 在 VS Code 中,这一行 /** @format */ 在保存时总是出现在我的 .js 文件的顶部
- python - 根据其他列的条件在新列中添加值
- flutter - 平台特定的依赖项颤动
- menu - 如何将 TableView 单元格操作添加到特定单元格