Задать вопрос
vessels
@vessels
Ни черта не понял, но очень интересно!

Игнорирование заглавных букв, пробелов, знаков препинания и тд. в python?

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

hello = ['start','Привет','Хай',\
'Доброе утро','Эй','Добрый день'\
,'Добрый вечер']

@alisha.message_handler(content_types = ['text'])
def send_text(message):
	text = 0
	for sayhello in hello:
		if message.text == sayhello:
			alisha.reply_to(message, random.choice(hello))
			text = 1
	if text == 0:
		alisha.reply_to(message, 'Я не понимаю!')


Так вот, мне нужно чтобы оно игнорировало из словаря заглавные буквы и пробелы, как это осуществить?
  • Вопрос задан
  • 1833 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Используйте более продвинутые методы проверки как вариант:
from Levenshtein import distance

HELLO = [x.lower() for x in 
   ['start', 'Привет', 'Хай',  'Доброе утро', 'Эй', 'Добрый день', 'Добрый вечер']]


samples = ['превед!', 'ывафыва', 'добрый день!', 'хэй', 'бла-бла']

for im in samples:
    print(f'> {im}')
    if any(distance(im.lower(), x) < 4 for x in HELLO):
        print('< Привет\n')
    else:
        print('< Я не понимаю\n')


> превед!
< Привет

> ывафыва
< Я не понимаю

> добрый день!
< Привет

> хэй
< Привет

> бла-бла
< Я не понимаю
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
deepblack
@deepblack Куратор тега Python
Убрать дублирующиеся пробелы:
sentence = ' hello  Alice'
" ".join(sentence.split())
>>> 'hello Alice'


Привести строку к нижнему регистру:
str.lower()
Return a copy of the string with all the cased characters converted to lowercase.
The lowercasing algorithm used is described in section 3.13 of the Unicode Standard.


Дальше я думаю разберётесь сами.
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
Для начала преобразовать в один регистр - нижний, а потом проверять входит ли подстрока(sayhello) в строку(message):
if sayhello.lower() in message.text.lower():
  ...

вообще тут надо хорошо подумать как сравнивать, возможно придется написать что-то сложнее чем что написал я.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:12
10000 руб./за проект
22 дек. 2024, в 19:47
3000 руб./за проект
22 дек. 2024, в 19:03
60000 руб./за проект