python - 从 json api 解析信息的问题
问题描述
我正在为我正在处理的机器人解析一些来自琐事 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,但现在它一直给我这个错误。这可能与我解析它的方式有关。任何帮助将不胜感激!
解决方案
首先,您不需要获取文本然后转换为 json:
data = response.text
parsed = json.loads(data)
requests 具有通过以下方式将响应转换为 json 的功能:
response.json()
在从 parsed["results"] 获取 ["question"] 的步骤中出现错误,因为 parsed["results"] 是列表类型,你应该通过数字来获取它,比如 0
question = parsed["results"][0]
然后你可以得到问题:
question = parsed["results"][0]['question']
await ctx.send(question)
推荐阅读
- node.js - 为什么我的节点 js express 应用程序不能保持活动状态?
- java - Java:使所有字段成为最终字段或可变字段?
- python - 在 Paramiko 的 SFTP 路径中使用环境变量
- python-3.x - 我想创建一个游戏
- c++ - 无法在 Geany 中执行构建命令
- python - 动态生成的内容的 html 标签在抓取时不显示文本
- node.js - Node JS的静态编译
- listview - Xamarin 自定义列表视图
- javascript - 如何使用 node.js 以角度下载图像?
- postgresql - Heroku 未使用 CLI 连接到 Heroku Postgres