2014-12-25 3 views
1

Я хотел бы обнаружить вульгарное слово в строке. У меня есть база данных неприличных слов, хранящихся в файле .txt. Этот файл я вложил в свой файл .py.Поиск запрещенных слов в строке

Пример плохого слова: строка

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

входные данные, например:

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

и я хочу, когда вход содержит слово в ответ слово является Ложные

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 
+0

Я думаю, вам не нужно регулярное выражение для этого. –

+0

Вы знаете, как разбить строку на массив слов? – akonsu

ответ

2

Для этого вам действительно не нужно Regex. Вы можете использовать all и generator 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) (линейный). Таким образом, быстрее найти вещи в наборе, чем со списком.

+0

Вот что я пробовал, но моя проблема была: split (",") без пробела. Благодарю. –

+0

Все в порядке, thx –

Смежные вопросы