繁体   English   中英

python 如何检查元组是否包含列表中的任何内容?

[英]python how to check if tuple contains anything from list?

我正在使用 python 制作 Discord 机器人,现在我正在发出命令,如果满足某些要求,机器人会重复您的输入。 该命令的完整代码在这里(我添加了注释)。 我正在对输入进行清理,其中一部分检查输入中是否使用了任何不好的词。

输入是一个元组,我这样做是为了显示前 5 个单词。

所以我想检查输入中是否使用了这些 BADWORD_triggers,目前我这样做是这样的: elif ' '.join(args) in BADWORD_triggers但是只检查第一个单词是否是触发器之一。 我还尝试了 BADWORD_triggers 中的elif args in BADWORD_triggers elif BADWORD_triggers in args这只会导致错误。

对于其他命令,我使用def async function(ctx, *, arg)我可以检查输入是否包含任何 BADWORD_triggers,如下所示: if arg in BADWORD_triggers:因为*, arg是一个字符串。

所以我的问题是具体的:如何检查一个元组是否包含列表中的任何内容。

例子:

这是我使用一个坏词“坏”作为唯一的第一个输入,机器人拒绝说。 但是我希望它也拒绝这个,因为它包含一个坏词。 https://imgur.com/a/CTA06Q1

在这里,我使用了一个坏词“坏”,但输入更多,消息被删除,机器人重复我说的话。 https://imgur.com/a/5v3Rpx2

例如,如果有坏词,您可以定义一个设置为 True 的变量:

badwords = False
for word in args:
     if word in BADWORD_triggers: badwords = True

你可以写一个简单的function

def check_bad_words(words):
    for word in words:
        if word in BADWORD_triggers:
            return True
    return False

然后在您的elif-statement

elif check_bad_words(args):
    pass

我得到的只是你有以下两个变量,其中包含一些输入数据和坏词

input_tuple = ("Hii", "This", 'Jack')
bad_words_check = ['xyz', 'abc']

您可以通过以下方式检查input_tuple中是否存在bad_words_check的任何单词

for word in input_tuple:
    if word in bad_words_check :
       # add your code for handling bad words
       print("got bad words")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM