@tmkbl

Как распарсить строку (python)?

Нужно распарсить команду с параметрами в телеграм-боте. Т.е. нужно распарсить обычную строку. Вид следующий:
/event add birthdays "День рождения" "2022.09.30"
Нужно получить ["event", "add", "birthdays", "День рождения", "2022.09.30"].
Просто .split() не подходит, так как то, что в кавычках, может иметь свои пробелы ("День рождения"). То, что в кавычках, разделять не надо.
Как это можно сделать? Сначала искать кавычки, убирать их вместе с тем, что внутри, и потом уже делить остатки без кавычек с помощью .split()?
  • Вопрос задан
  • 164 просмотра
Решения вопроса 2
@Wispik
Если формат строки всегда такой, я бы сделал через регулярное выражение:
import re

s = '/event add birthdays "День рождения" "2022.09.30"'
regexp = r'/(\w+)\s(\w+)\s(\w+)\s\"([\w\s]+)\"\s\"([\d\.]+)'
result = re.match(regexp, s)
print(result.groups())
Ответ написан
Комментировать
ramzis
@ramzis
FullStackOverflow
Без регулярного выражения.
text = '/event add birthdays "День рождения" "2022.09.30"'
result = text[:text.find(' "')].split(' ') + [i.replace('"','') for i in text[text.find('"'):].split('" "')]
print(result)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
shlex.split(), например?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы