У меня есть строка, в которой слово "LOCAL" встречается много раз. Я использовал функцию find()
для поиска этого слова, но он также возвращает другое слово "Locally". Как я могу точно совместить слово "local"?
Точное совпадение строк
Ответ 1
Для такого рода вещей регулярные выражения очень полезны:
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 *****.
Вы можете удалить флаги = re.IGNORECASE, если вы не хотите игнорировать этот случай, очевидно.
Ответ 2
Ниже вы можете использовать простую функцию.
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 ":("
Ответ 3
Вы можете использовать регулярные выражения для ограничения совпадений на границе слова, например:
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']
Ответ 4
Ищите 'local'? Обратите внимание, что Python чувствителен к регистру.
Ответ 5
Сделайте поиск регулярных выражений для \blocal\b
\ b - это "граница слов", которая может включать начало строк, концы строк, пунктуацию и т.д.
Вы также можете искать регистр без учета.
Ответ 6
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 будет соответствовать.