Посоветуйте подход в Python, библиотеку(ки), где можно бы декларативно описать такую структуру и получать на выходе парсера "гирлянду" из распарсенных структур?
Здравствуйте, Antei, Вы писали:
A> Посоветуйте подход в Python, библиотеку(ки), где можно бы декларативно описать такую структуру и получать на выходе парсера "гирлянду" из распарсенных структур?
Эээ.. Ну это какой-то кастомный формат, для него нужен кастомный парсер. Если совсем уж так декларативно, то берёшь какую-нибудь либу LR-парсера и фигачишь грамматику. Но, имхо, это из пушки по воробьям.
Вроде можно немножко кастомизировать построчный csv-парсер, решение будет на десяток строк от силы.
Или я не понял, что ты хочешь от "декларативно".
Ещё как вариант, дать по кумполу товарищам, которые выдумали ещё один гениальный формат, и попросить их использовать какой-нибудь json.
Здравствуйте, ·, Вы писали:
·>Здравствуйте, Antei, Вы писали:
A>> Посоветуйте подход в Python, библиотеку(ки), где можно бы декларативно описать такую структуру и получать на выходе парсера "гирлянду" из распарсенных структур? ·>Эээ.. Ну это какой-то кастомный формат, для него нужен кастомный парсер. Если совсем уж так декларативно, то берёшь какую-нибудь либу LR-парсера и фигачишь грамматику. Но, имхо, это из пушки по воробьям. ·>Вроде можно немножко кастомизировать построчный csv-парсер, решение будет на десяток строк от силы.
Это один из нескольких десятков файлов, которые прийдётся онбоардить.
Все файлы подходят под описанную структуру.
Поэтому и хочется сделать слой который сможет по описанию парсить, чтобы сократить время онбоардинга фида.
·>Или я не понял, что ты хочешь от "декларативно".
Да, хотелось бы где-нибудь (yaml, json, ...) описать грамматику типа на какие колонки разбит каждый тип строки и как эти строки связаны между собой.
Я новичок в Python, пока пытаюсь найти подходящие решения/либы.
Прежде чем ринуться писать свой велосипед )
·>Ещё как вариант, дать по кумполу товарищам, которые выдумали ещё один гениальный формат, и попросить их использовать какой-нибудь json.
Внешний фид, ничего не сделаешь.
Re[3]: [python] Подскажите библиотеку распарсить иерархический CSV файл на Pytho
Здравствуйте, Antei, Вы писали:
A> ·>Вроде можно немножко кастомизировать построчный csv-парсер, решение будет на десяток строк от силы. A> Это один из нескольких десятков файлов, которые прийдётся онбоардить. A> Все файлы подходят под описанную структуру. A> Поэтому и хочется сделать слой который сможет по описанию парсить, чтобы сократить время онбоардинга фида.
Я не думаю, что есть что-нибудь готовое... Наваять штуку, которая по описанию ожидаемых полей будет хитро парсить csv... ну 20 строчек выйдет, имхо.
A> ·>Или я не понял, что ты хочешь от "декларативно". A> Да, хотелось бы где-нибудь (yaml, json, ...) описать грамматику типа на какие колонки разбит каждый тип строки и как эти строки связаны между собой.
Я бы описывал такую "грамматику" на самом питоне. Легче будет всякие кастомизации прикручивать. Например, легко будет добавить кусочек кода в виде лямбды для парсинга хитрого типа колонки.
A> Я новичок в Python, пока пытаюсь найти подходящие решения/либы. A> Прежде чем ринуться писать свой велосипед )
Уж очень велосипедный формат сам по себе. В лучшем случае может есть что-то у разработчиков этого самого внешнего фида.
A> Внешний фид, ничего не сделаешь.
Сочувствую.
Здравствуйте, Antei, Вы писали: A>Посоветуйте подход в Python, библиотеку(ки), где можно бы декларативно описать такую структуру и получать на выходе парсера "гирлянду" из распарсенных структур?
disclaimer: Раньше с парсерами на основе грамматик на питоне не работал
Дальше руки зачесались их попробовать. И это в час ночи!!!
Нашел первый попавшийся парсер с описанием грамматик в виде BNF и с большим количеством звезд гитхаба.
Не знаю где вы берёте время так подробно отвечать на вопрос, огромное спасибо за ответ!
Б>disclaimer: Раньше с парсерами на основе грамматик на питоне не работал
Б>Посмотрел, какие парсеры на основе грамматик есть в питоне. Оказалось, что их куча. Б>Статью нашел (но особо не вникал) https://tomassetti.me/parsing-in-python/
Да, я тоже уже натыкался на эту статью, оказалась полезной.
Б>Дальше руки зачесались их попробовать. И это в час ночи!!! Б>Нашел первый попавшийся парсер с описанием грамматик в виде BNF и с большим количеством звезд гитхаба.
Супер, буду его смотреть, для начала то что надо!
Еще раз спасибо!