解析json api中的信息时出现问题

2024-04-29 00:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解析一个机器人的琐事api中的一些数据,我正在从https://opentdb.com/api.php?amount=1&type=中提取数据,当我通过这段代码解析它时

response = requests.get('https://opentdb.com/api.php?amount=1&type=')
data = response.text
parsed = json.loads(data)
question = parsed["results"]["question"]
await ctx.send(question)

我得到这个错误:

list indices must be integers or slices, not str

在解析之前,我得到的是纯json,但现在它总是给我这个错误。这可能与我解析它的方式有关。任何帮助都将不胜感激


Tags: 数据httpscomapijsondataresponsetype
2条回答

该错误是由于解析的['results']是列表而不是字典。因此,您需要在结果列表中指定所需的项(0表示第一项,1表示第二项,等等)。 此外,请求-响应对象具有内置的.json()方法,因此无需使用json.load

response = requests.get('https://opentdb.com/api.php?amount=1&type=')
parsed = response.json()
question = parsed["results"][0]["question"]
await ctx.send(question)

首先,您不需要获取文本,然后转换为json:

data = response.text
parsed = json.loads(data)

请求具有通过以下方式将响应转换为json的功能:

response.json()

从解析的[“结果”]获取[“问题”]的步骤出现错误, 因为解析的[“results”]是列表类型,您应该按数字(如0)获取它

question = parsed["results"][0]

然后你可以得到一个问题:

question = parsed["results"][0]['question']
await ctx.send(question)

相关问题 更多 >