2015-04-28 6 views
2

Я работаю с Python v2.7, и я пытаюсь выяснить, можете ли вы определить, находится ли слово в строке.Python - проверка Если строка в большем Строка

Если, например, у меня есть строка и слово я хочу найти:

str = "ask and asked, ask are different ask. ask" 
word = "ask" 

Как должен я код так, что я знаю, что результат я получить не включает в себя слова, которые являются частью других слов , В приведенном выше примере я хочу, чтобы все «спрашивали», кроме одного «спросил».

Я попытался с помощью следующего кода, но он не работает:

def exact_Match(str1, word): 
    match = re.findall(r"\\b" + word + "\\b",str1, re.I) 
    if len(match) > 0: 
     return True 
    return False 

Может кто-то пожалуйста, объясните, как я могу это сделать?

+1

использовать один обратный слэш в сырых строках. –

+0

Что Казимир в основном говорит, либо использует 'r" \ b "', либо использовать '' \\ b "'. Таким образом, правильный фрагмент может быть либо «r» \ b «+ word + r» \ b »или« »\\ b« + word + »\\ b» ' – Jerry

ответ

3

Вы можете использовать следующую функцию:

>>> test_str = "ask and asked, ask are different ask. ask" 
>>> word = "ask" 

>>> def finder(s,w): 
... return re.findall(r'\b{}\b'.format(w),s,re.U) 
... 
>>> finder(text_str,word) 
['ask', 'ask', 'ask', 'ask'] 

Заметьте, что вам нужно \b для граничных регулярных выражений!

Или вы можете использовать следующую функцию для возврата индексов слов: в расщепленной строке:

>>> def finder(s,w): 
... return [i for i,j in enumerate(re.findall(r'\b\w+\b',s,re.U)) if j==w] 
... 
>>> finder(test_str,word) 
[0, 3, 6, 7] 
+0

Какой формат (w) для? –

+0

@FranciscoF прочитайте полный документ в https://docs.python.org/3/library/stdtypes.html#str.format – Kasramvd

+0

** НЕ используйте ** str 'для имен переменных, поскольку это переопределяет [' str() '] (https://docs.python.org/2/library/functions.html#str). – Jerry

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