【问题标题】:python how to check if tuple contains anything from list?python如何检查元组是否包含列表中的任何内容?
【发布时间】:2020-10-22 22:29:42
【问题描述】:

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

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

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

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

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

例子:

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

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

【问题讨论】:

  • 无法清楚地理解您的问题,添加一个示例Tuple,您希望将其与示例list 匹配并在您的问题中输出以获得更好的解释
  • 我当然可以。

标签: python list tuples sanitization


【解决方案1】:

你可以写一个简单的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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      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")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-05
        • 2022-12-06
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多