2014-10-19 2 views
-2
test_string = ("this is a test") 

test_list = [dog, cat, test, is, water] 

Как узнать, есть ли 'this' или 'is' или 'a' или 'test' в test_list?Как проверить, являются ли слова в строке элементами в списке или списках?

+0

возможно дубликат [Как проверить, если строка содержит элемент из списка в Python] (http://stackoverflow.com/questions/6531482/how-to-check-if-a-string-contains-an-element-from-a-list-in-python) – Parker

+0

не должен тестировать_list = [собака, кот, тест, есть, вода] скорее быть test_list = ['dog', 'cat', 'test', 'is', 'water']? – tagoma

+0

Да, я торопился, что часто делаю эту ошибку. –

ответ

0

Используйте str.split разбить строку и использовать any, чтобы увидеть, если какой-либо из слов в строке в списке:

test_string = ("this is a test") 

test_list = ["dog", "cat", "test", "is","water"] 
print(any(x in test_list for x in test_string.split())) 



In [9]: test_string = ("this is a test") 

In [10]: test_string.split() 
Out[10]: ['this', 'is', 'a', 'test'] # becomes a list of individual words 
0

Вы можете использовать any для этого

inlist = any(ele in test_list for ele in test_string.split())

inlist будет True или False, в зависимости от того, находится ли он в списке.

Пример:

>>test_string = ("this is a test") 
>>test_list = ['dog', 'cat', 'water'] 
>>inlist = any(ele in test_string for ele in test_list) 
>>print inlist 
False 

>>test_string = ("this is a test") 
>>test_list = ['dog', 'cat', 'is', 'test' 'water'] 
>>inlist = any(ele in test_string for ele in test_list) 
>>print inlist 
True 
+0

nope, вы повторяете каждый символ не каждое слово –

+0

Я перебираю каждый элемент в списке и проверяю его вообще. – Parker

+0

try 's =" this test "print (" th "in s)' –

0

Что вы спрашиваете только ли непустое множество пересечений.

>>> set(test_string.split(' ')).intersection(set(test_list)) 
set(['test', 'is']) 
0

Одним из вариантов является регулярное выражение, например

import re 

# Test string 
test_string = 'this is a test' 

# Words to be matched 
test_list = ['dog', 'cat', 'test', 'is', 'water'] 

# Container for matching words 
yes = [] 

# Loop through the list of words 
for words in test_list: 
    match = re.search(words, test_string) 
    if match: 
     yes.append(words) 

# Output results 
print str(yes) + ' were matched' 

#['test', 'is'] were matched 
Смежные вопросы