Точное соответствие строки - PullRequest
16 голосов
/ 13 ноября 2010

У меня есть строка, в которой слово "LOCAL" встречается много раз. Я использовал функцию find() для поиска этого слова, но оно также возвращает другое слово «Локально». Как я могу точно подобрать слово «местный»?

Ответы [ 6 ]

39 голосов
/ 13 ноября 2010

Для такого рода вещей регулярные выражения очень полезны:

import re

print(re.findall('\\blocal\\b', "Hello, locally local test local."))
// ['local', 'local']

\ b означает границу слова, в основном. Может быть пробелом, пунктуацией и т. Д.

Редактировать для комментария:

print(re.sub('\\blocal\\b', '*****', "Hello, LOCAL locally local test local.", flags=re.IGNORECASE))
// Hello, ***** locally ***** test *****.

Вы можете удалить flags = re.IGNORECASE, если вы не хотите игнорировать регистр, очевидно.

10 голосов
/ 06 мая 2012

Ниже вы можете использовать простую функцию.

def find_word(text, search):

   result = re.findall('\\b'+search+'\\b', text, flags=re.IGNORECASE)
   if len(result)>0:
      return True
   else:
      return False

Использование:

text = "Hello, LOCAL locally local test local."
search = "local"
if find_word(text, search):
  print "i Got it..."
else:
  print ":("
2 голосов
/ 13 января 2017
line1 = "This guy is local"
line2 = "He lives locally"

if "local" in line1.split():
    print "Local in line1"
if "local" in line2.split():
    print "Local in line2"

Будет соответствовать только строка 1.

2 голосов
/ 13 ноября 2010

Вы можете использовать регулярные выражения для ограничения совпадений на границе слова, например:

import re
p = re.compile(r'\blocal\b')
p.search("locally") # no match
p.search("local") # match
p.findall("rty local local k") # returns ['local', 'local']
2 голосов
/ 13 ноября 2010

Выполните поиск по регулярному выражению для \ blocal \ b

\ b - это «граница слова», она может включать начало строк, конец строк, знаки пунктуации и т. Д.

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

1 голос
/ 13 ноября 2010

Ищите «местный»? Обратите внимание, что Python чувствителен к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...