2016-01-20 2 views
-1

я пытаюсь проверить, если str1 существует в str2Python как проверить, если строка содержит слово

def string_contains(str1,str2): 
    return bool (str1 in str2) 

print (string_contains("llo","hello how are you")) 
# expected false but return value is true 
# the possible true for s1 is hello or hello how or hello how are 
# hello how are you 
+0

Вы сделали какие-либо исследования о том, как 'в' работает со строками? Любой вообще? – TigerhawkT3

+2

Возможный дубликат [Есть ли у Python строка, содержащая метод подстроки?] (Http://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method) –

+0

@JJHakala - Читать этот вопрос более тщательно. Это не дубликат. – TigerhawkT3

ответ

1

Это должно работать - это обеспечит только целые слова совпадают, и предложения должны совпадать с самого начала ,

def string_contains(str1,str2): 
    lst1 = str1.split(' ') 
    lst2 = str2.split(' ') 

    if len(lst1) <= len(lst2): 
     return lst1 == lst2[:len(lst1)] 

    return False 

print (string_contains("llo", "hello how are you")) # False 
print (string_contains("hello", "hello how are you")) # True 
print (string_contains("hello how", "hello how are you")) # True 
print (string_contains("hello how a", "hello how are you")) # False 
+0

Вы можете использовать 'first_idx = lst2.index (lst1 [0])', чтобы получить ответы, которые не совпадают с началом. Это может вызвать исключение, которое необходимо обработать, если между списком нет соответствия. – pekapa

0

Мне нравится использование регулярного выражения модуль re.

Код:

import re 

pattern = re.compile('\sllo\s') # add another parameter `re.I` for case insensitive 
match = pattern.search('hello how are you') 
if match: 
    return True 
else: 
    return False 
Смежные вопросы