首页 > 解决方案 > 从 txt 文件中读取单词以进行单词过滤

问题描述

这是我试图使用的代码,以便从我的 words.txt 文件中的数组中读取单词,但目前不起作用并且无法弄清楚如何执行此操作。

@client.listen('on_message')
async def msgfilter(message, member: discord.Member = None):

    wordfilter = open("filter.txt", "r")

    words = set(message.content.split())
    if not words.isdisjoint(wordfilter.read):
        await ctx.send("No")

目前,我只是将这些词直接放在我的 main.py 文件中,并且如果启用了审核模块,则用户无法说出的单词数组中大约有 50,000 个单词。

这些都在我的 main.py 文件中,但是为了避免成员规避这些限制的组合使其更长。但它目前使文档编辑或保存/关闭文件的速度变慢。

如何从文件中的数组中读取每个单词并检查用户消息中的单词是否包含在此文档中?

这是 words.txt 文档的示例,其中包含数组中的单词。

wordfilter = ['badword', 'badword', 'badword', 'badword', 'badword', 'badword']

标签: pythonarrayslistarraylistdiscord.py

解决方案


wordfilter = open("filter.txt", "r")

words = set(message.content.split())
filter_words = [w[1:-1] for w in wordfilter.read().strip().split(", ")]

if not words.isdisjoint(filter_words):
    await ctx.send("No")

wordfilter.close()

假设您的 filter.txt 包含格式中的信息'word1', 'word2', 'word3', ...

你的程序很慢是正常的;50k 字很多,每次发送消息时您都要重新打开文件。您可能想看看是否可以将文件内容保留在内存中。不过,我真的不明白为什么它会崩溃。


推荐阅读