如何从 python 中的字段中提取特定数据以打印它?
Posted
技术标签:
【中文标题】如何从 python 中的字段中提取特定数据以打印它?【英文标题】:How do I extract a specific data from a Field in python to print it? 【发布时间】:2022-01-17 08:09:00 【问题描述】:我正在使用 discord.py API 构建一个机器人,通过不同的命令向我展示一些投票的结果。例如,我有一个你喜欢水果吗?的问题,以及是和否的选项。当您使用 !votes 命令时,我想通过屏幕显示选项 1(是)有 3 票,而选项 2(否)有 1。问题是包含票数的变量不是单个变量也不是以 JSON 格式提供给我,而是以字段格式(任何)。当我提出请求时,这将返回邮递员:
"res" : "OrderedDict([('option', 'Yes'), ('number', 2), ('votes', 3)]), OrderedDict([('option', 'No'), ('number', 1), ('votes', 1)])"
由此,我只希望命令使用'votes'部分,但我不知道如何从字符串中提取它。
我从其他字段中提取了其他数据,如下所示:
data = v.json()[1]
voter = data['voter']
因为它们是 JSONField。但我不知道如何使用另一种形式。
你能帮帮我吗?
编辑:我尝试使用我在这里的一些问题中看到的这段代码
for line in res.split('OrderedDict'):
vote = re.match(".*'votes',(\d+)", line)
print(vote.group(1))
但它也不起作用。
提前谢谢你
【问题讨论】:
为什么你的 JSON 中有OrderedDict
这个词?
@eatmeimadanish 该行不是 JSON 格式,而是 Field 格式
好吧,因为它不是腌制数据,我怀疑 JSON 是否会知道将文本数据转换为有序的字典。我的预感是首先创建的数据设置错误。
【参考方案1】:
我不熟悉 discord API,但看起来您有一个返回 OrderedDict()
的库。您应该能够将其或多或少等同于普通 Python dict,并通过键检索值:
from collections import OrderedDict
choice = OrderedDict([('option', 'Yes'), ('number', 2), ('votes', 3)])
n_votes = choice['votes']
print(n_votes)
# 3
顺便说一句,您发布的示例以某种方式损坏。括号不平衡 - 可能是复制粘贴错误。
【讨论】:
感谢您的回答!但是我不应该以某种方式访问包含该变量的 res 变量,或者以某种方式表明它在该变量内吗?导入后 另外,投票数会发生变化,我从网关 url 获取投票数,所以我想要的是接收该数字,而不必自己输入。 我包含的代码是一个最小的工作示例,但您必须根据您的用例对其进行调整。如果my_response
是包含您的响应字典的变量,您可能需要执行类似my_response['res'][0]['votes']
的操作。如果您链接到您正在使用的 Discord 库的文档并包含 minimal reproducible example.以上是关于如何从 python 中的字段中提取特定数据以打印它?的主要内容,如果未能解决你的问题,请参考以下文章
浏览pdf文件以查找特定页面并使用python从图像中提取表格数据
使用 Python 从 Twitter 流 API 中提取特定的 JSON 字段