Как найти слово (точное совпадение) в строке? - PullRequest
2 голосов
/ 04 октября 2011

Я пытаюсь найти подстроку

>>>str1 = 'this'
>>>str2 = 'researching this'
>>>str3 = 'researching this '

>>>"[^a-z]"+str1+"[^a-z]" in str2
False

>>>"[^a-z]"+str1+"[^a-z]" in str3
False

Я хотел True, когда смотрел в str3. что я делаю не так?

Ответы [ 6 ]

6 голосов
/ 04 октября 2011

Вам нужен модуль Python re :

>>> import re
>>> regex = re.compile(r"\sthis\s") # \s is whitespace
>>> # OR
>>> regex = re.compile(r"\Wthis\W")
>>> # \w is a word character ([a-zA-Z0-9_]), \W is anything but a word character
>>> str2 = 'researching this'
>>> str3 = 'researching this '
>>> bool(regex.search(str2))
False
>>> regex.search(str3)
<_sre.SRE_Match object at 0x10044e8b8>
>>> bool(regex.search(str3))
True

У меня есть предчувствие, что вы на самом деле ищете слово «это», а не «это» с несловесными символами. В этом случае вы должны использовать слово escape-последовательность \b.

1 голос
/ 04 октября 2011

Похоже, вы хотите использовать регулярные выражения, но вы используете обычные строковые методы. Вам необходимо использовать методы в модуле re :

import re
>>> re.search("[^a-z]"+str1+"[^a-z]", str2)
>>> re.search("[^a-z]"+str1+"[^a-z]", str3)
<_sre.SRE_Match object at 0x0000000006C69370>
0 голосов
/ 22 октября 2013

использовать re модуль.Модуль re - это тот, который вы должны использовать.re камни.

0 голосов
/ 04 октября 2011
import re
str1 = 'this'
str2 = 'researching this'
str3 = 'researching this '

if re.search("[^a-z]"+str1+"[^a-z]", str2):
    print "found!"

if re.search("[^a-z]"+str1+"[^a-z]", str3):
    print "found!"
0 голосов
/ 04 октября 2011

Для регулярных выражений в Python используйте модуль re:

>>> import re
>>> re.search("[^a-z]"+str1+"[^a-z]", str2) is not None
False
>>> re.search("[^a-z]"+str1+"[^a-z]", str3) is not None
True
0 голосов
/ 04 октября 2011

Я не думаю, что in выполняет поиск по регулярному выражению.

Посмотрите на модуль re.

Неясно, что вы на самом деле пытаетесь сделать, но если вы хотите знать, находится ли «это» в «исследовании этого», выполните:

"this" in "researching this"

(или)

str1 in str3

Или, если вы пытаетесь найти его целиком, выполните:

"this" in "researching this".split()

В результате он разбивает «исследование этого» на ["researching", "this"] и затем проверяет точное слово «это» в нем. Итак, это Ложь:

"this" in "researching thistles".split()
...