2016-08-24 6 views
1

Использование python3, у меня есть список слов, как: ['foot', 'stool', 'carpet']если allwords в названии: матч

эти списки различаются по длине от 1-6 или около этого. У меня есть тысячи и тысячи строк для проверки, и требуется, чтобы все три слова присутствовали в заголовке. где: 'carpet stand upon the stool of foot balls.' - это правильное совпадение, так как все слова присутствуют здесь, даже если они не работают.

ив задавался вопросом об этом в течение длительного времени, и единственное, что я мог думать о какой-то итерации, как:

for word in list: if word in title: match! 

, но это дает мне результаты, как 'carpet cleaner' что неправильно. я чувствую, что есть какой-то ярлык, чтобы сделать это, но я не могу понять это без использования чрезмерного list(), continue, break или других методов/терминологии, с которыми я еще не знаком. и т.д. и т.п.

+1

вы хотите 'recarpeted footstool' соответствовать? –

ответ

5

Вы можете использовать all():

words = ['foot', 'stool', 'carpet'] 
title = "carpet stand upon the stool of foot balls." 

matches = all(word in title for word in words) 

Или инвертировать логику не any() и not in:

matches = not any(word not in title for word in words) 
+1

Возможно, вы захотите разбить, если подстроки не должны совпадать. –

+1

@PadraicCunningham. Также избегайте совпадений с такими, как 'recarpeted'. –

+0

Хорошие моменты, спасибо! Nltk * word tokenizer * может быть немного лучше разделить на слова и обработать все знаки препинания. – alecxe