python - 添加行时如何让我的字典 discord.py 机器人停止循环
问题描述
所以我在互联网上找到了这个开源的 discord.py 机器人,它使用 wordnet 来获取任何给定单词的定义。它应该首先发送单词所在的词性(名词,动词,形容词),然后在其下方,应该有单词的多个定义。
但是,当前代码不断循环整个过程。在添加单词的每个新定义时,它会不断重复词性部分。您可以在下图中亲自看到我的意思:
如您所见,这会导致不必要的长消息。相反,我希望它事先添加所有点并且只发送成品。像这样:
名词
- ...
- ...
- ...
- ...
- ...
- ...
这是当前代码:
nltk.download("wordnet")
from collections import defaultdict
from nltk.corpus import wordnet
def format_meaning(word, synsets, m):
person = str(m.author.mention)
log = person + ", the definition is:\n\n"
reply = f"**{word}**\n\n"
char = 0
# Group by POS
grouped = defaultdict(list)
for synset in synsets:
grouped[PARTS_OF_SPEECH[synset.pos()]].append(synset.definition())
for pos, definitions in grouped.items():
if char > 1250:
return log + reply
reply += f"*{pos}*\n"
char += len(f"*{pos}*\n")
for counter, definition in enumerate(definitions, 1):
reply += f" {counter}. {definition}\n"
char += len(f" {counter}. {definition}\n")
return log + reply
我有一些使用 Python 的经验,但这有点超出我的想象,我不知道如何让它工作。因此,任何帮助将不胜感激!
解决方案
推荐阅读
- sql - 动态 SQL 在多个模式中循环遍历同一个表
- ios15 - Xcode 不支持 iOS 15.0
- java - 为什么字符串的 Avro 字段现在需要 avro.java.string 类型?
- apache-flink - Flink SQL 1.11 中查询嵌套字段
- python - 由于某种原因无法更改列表列表。适用于 python 2 但不适用于 python 3
- javascript - 将嵌套数组和元素作为参数的函数,返回一个新数组,如果嵌套数组不包含元素,它将把它推送到 newArr
- html - 为什么我的网格项目没有与中心对齐?
- python - 获取开始和结束时间戳并查找按日期分组的两个时间戳之间的秒数的更快方法?
- c# - 从 Outlook VSTO 插件写入事件日志
- python - Pandas:垂直展平嵌套字典