如何从 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 中的字段中提取特定数据以打印它?的主要内容,如果未能解决你的问题,请参考以下文章

从Python中的json文件中的特定字段中提取文本

浏览pdf文件以查找特定页面并使用python从图像中提取表格数据

使用 Python 从 Twitter 流 API 中提取特定的 JSON 字段

努力从 BigQuery SQL 中的时间戳字段中提取特定月份的 DATE

PYTHON关于提取返回JSON结果中特定字段的问题

python怎么从一堆数据中取数