Как проверить слово в python?
Использую pyTelegramBotAPI. Если первое слово !add, то выполнять определённое действие, Т.е
elif message.text[0,1,2,3,4] == '!add':
add_message(message.from_user.id, message.from_user.id)
bot.send_message(message.from_user.id, 'Ваш запрос добавлен в базу данных!\nВ скорем времени
мы вам ответим!')
Но по индексу проверить не получается
Ответы (1 шт):
Будем считать, что message.text - строка.
1 вариант: вырезать 4 первых символа и сравнить с нужными
elif message.text[:4] == '!add':
Выкинет исключение, если строка короче 4 символов. Также условие будет срабатывать на более длинные команды, начинающиеся на !add - какой-нибудь !addmeplease, например. Можно в этом случае проверять не 4 символа, а 5 символов с пробелом:
elif message.text[:5] == '!add ':
Но это не отменяет необходимость проверки длины строки.
Еще один минус этого способа - можно забыть исправить размер слайса, в итоге условие всегда будет ложным, например:
elif message.text[:4] == '!add ':
- тут будут сравниваться строки разной длины - 4 и 5 элементов, это всегда False.
2 вариант: проверять начало сообщения с помощью метода startswith
elif message.text.startswith('!add '):
Этот метод сам уже учитывает длину исходной строки (если строка слишком короткая - метод просто вернет False)
3 вариант: разбить строку по пробелам, взять первый элемент. В данном случае удобно использовать метод partition:
elif message.text.partition(' ')[0] = '!add':
Отличие от метода split:
splitразбивает строку по разделителю, возвращает список частей. В случае пустой строки - это будет пустой список, соответственно получение первой части вызовет исключениеpartitionразделяет строку по первому разделителю. Для любой строки возвращает три элемента: первая часть, разделитель, остальная часть. Если разделитель не найден - то вся исходная строка и две пустых строки. Если исходная строка пустая, то будет три пустых строки. Поэтому можно спокойно проверять первую часть на равенство нужному параметру.