Нужно распарсить команду с параметрами в телеграм-боте. Т.е. нужно распарсить обычную строку. Вид следующий:
/event add birthdays "День рождения" "2022.09.30"
Нужно получить ["event", "add", "birthdays", "День рождения", "2022.09.30"].
Просто .split() не подходит, так как то, что в кавычках, может иметь свои пробелы ("День рождения"). То, что в кавычках, разделять не надо.
Как это можно сделать? Сначала искать кавычки, убирать их вместе с тем, что внутри, и потом уже делить остатки без кавычек с помощью .split()?
text = '/event add birthdays "День рождения" "2022.09.30"'
result = text[:text.find(' "')].split(' ') + [i.replace('"','') for i in text[text.find('"'):].split('" "')]
print(result)
Например добавить еще одно поле с комметарием к дню рождения тоже в кавычках. Например
Использовал бы тот же самый код.
text = '/event add birthdays "День рождения" "2022.09.30" "Сидорова не приглашать!"'
result = text[:text.find(' "')].split(' ') + [i.replace('"','') for i in text[text.find('"'):].split('" "')]
print(result) #['/event', 'add', 'birthdays', 'День рождения', '2022.09.30', 'Сидорова не приглашать!']