message = "I'm new and this is new my account."
Программа попытается обнаружить «привет» в этой строке, даже если здесь нет «привет», она найдет ключевое слово в части «и это м ...», если попытаться использовать такой код:
if "hi" in message.lower():
print("He said hi!")
Как я могу заблокировать это?
Элегантным решением будет:
if ' hi ' in f' {message} ':
print("He said hi!")
Или используя регулярное выражение: https://stackoverflow.com/a/5320179/4585157
@Demir Используйте этот ответ, чтобы справиться с этим делом.
@Demir, тогда это все равно сработает. Добавляем пробел до и после сообщения для проверки.
Вы можете использовать регулярные выражения.
import re
message = "I'm new and this is new my account."
message_with_hi = "what's up, I'm saying hi"
pattern = r'\bhi\b' # \b is word boundary
r = re.findall(pattern, message)
r2 = re.findall(pattern, message_with_hi)
print(r) # prints []
print(r2) # prints ['hi']
Это также распространяется на такие случаи, как message = "I am saying hi!"
.
Tnx братан спас меня
@Demir Все хорошо, пожалуйста, примите ответ (нажмите на галочку), если он решил ваш вопрос.
это может работать, но что, если строка начинается с привет? "привет, меня зовут..." да, после "привет" есть пробел, но перед "привет" нет пробела