在字符串中搜索禁止的单词

时间:2014-12-25 20:17:01

标签: python regex string python-3.x

我想在字符串中检测到一个粗俗的单词。我有一个存储在.txt文件中的不雅词汇数据库。这个文件放在我的.py文件中。

示例坏词:

words = "word, something, dog, cat ...."

输入数据字符串例如:

input = "xxxxdogxxx" or "dogxxxx" or "xxxdog" or "dog" "ok_word" # xxx == any word

我希望,当输入包含单词return中的单词时返回False

def check(input):
    word = "something, something, ..."
    x = ???? # I do not know how to do it, probably using regular expressions: re.match?
    if x:
        return False
    else:
        return True

1 个答案:

答案 0 :(得分:2)

你实际上并不需要Regex。您可以使用allgenerator expression

def check(input):
    return all(x not in input for x in bad_words)

要将您的字词串添加到列表中,请使用str.split

>>> words = "word, something, dog, cat"
>>> words.split(', ')
['word', 'something', 'dog', 'cat']
>>>

您可能还想在列表中调用set()以改善查找时间。集合与O(1)in运算符具有not in(常数)复杂度,而列表具有O(n)(线性)。因此,在集合中查找事物比在列表中查找更快。