[英]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.