Vindicar
@Vindicar
RTFM!

Как проще всего представить простой форматированный текст в Python?

Мне придётся иметь дело с простым форматированным текстом из нескольких источников в разных форматах, типа Markdown. Фишки вроде вставленных таблиц или изображений не потребуются, только начертания шрифта, моноширинный текст и, возможно, цвет.

Понятно, что проще всего выбрать одно представление для такого текста и конвертировать в него всё, что поступает на вход. Вопрос в том, какое представление выбрать - желательно, чтобы данные были текстовыми, для упрощения передачи, хранения и отладки.

XML хорош тем, что может храниться в простой строке и достаточно прост в экранировании. Он поддерживается из коробки, через lxml или аналоги. Его вариант enriched text вполне даёт нужное подмножество возможностей. Но он довольно многословен, и конвертация текста будет утомительной - по дереву тегов набегаешься.

Markdown компактен и тоже может храниться в простой строке. Но он сложнее в экранировании, и не поддерживает цвет (насколько я знаю). При экспорте в markdown это не беда, но вот при импорте хотелось бы сохранить всё, что можно. Не уверен насчёт библиотеки, которая умела бы markdown - наверняка есть, но нужно искать и изучать.

RTF более-менее распространён, но он довольно замороченный и напоминает TeX. В плане работы с ним мне кажется, что он будет сочетать многословность XML и нетривиальность markdown.

Какие ещё есть варианты?
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Какие-то у вас требования сранные. Кому будет утомительно? Вы вручную конвертировать планируете? Или остерегаетесь по поводу алгоритмической сложности преобразования? Конвертация - это изолированная и хорошо тестируемая задача. Разметка на основе XML даст вам максимальную гибкость и универсальность, всегда можно игнорировать те или иные возможности форматирования и не потерять какие-то нюансы. Можно надобавлять свои неймспейсы и атрибуты в них. Маркдаун такого гарантировать не сможет.
Что значит "по дереву тегов набегаешься"? Вы в ручную бегать собираетесь?
Куда и зачем вам надо конвертировать? Как-то эту важную часть вы оставили за скобками.
Обратно тоже потребуется? Есть ли требование идентичности при двойном преобразовании?
Используйте XML и не морочьте себе голову. Общий формат должен быть максимально строгим, документированным, однозначным и универсальным. Лучше XML вы тут ничего не найдёте. Если в какой-то момент у вас в одном из форматов встретится какое-то особое форматирование (подчеркивание волнистой линией какое-нибудь), то в XML добавить новый тег или атрибут не составит труда, чтобы сохранить информацию и не нарушить обратную совместимость, а вот с зоопарком диалектов маркдауна вы намучаетесь изрядно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы