Python: поиск подстроки - PullRequest
       11

Python: поиск подстроки

2 голосов
/ 03 октября 2011

Я пытаюсь найти целые слова в строке и не знаю, как это сделать.

str1 = 'this is'
str2 ='I think this isnt right'
str1 in str2

дает мне True, но я хочу, чтобы он возвратил False.Как мне это сделать?Спасибо.

Я пытался str2.find(str1), re.search(str1,str2),, но я не получаю, чтобы они ничего не возвращали или Ложь.

Пожалуйста, помогите.спасибо.

Ответы [ 2 ]

3 голосов
/ 03 октября 2011

Используйте сущность \b в регулярных выражениях для сопоставления границ слов.

re.search(r'\bthis is\b', 'I think this isnt right')
1 голос
/ 03 октября 2011

Другой способ использования устанавливает без регулярного выражения:

set(['this', 'is']).issubset(set('I think this isnt right'.split(' ')))

Если строка действительно длинная или вы собираетесь продолжать оценивать наличие слов в наборе, это может быть более эффективным. Например:

>>> words = set('I think this isnt right'.split(' '))
>>> words
set(['I', 'this', 'isnt', 'right', 'think'])
>>> 'this' in words
True
>>> 'is' in words
False
...