@poncholover

Как с Python получить текст из DOCX с сохранением форматирования?

Друзья, суть вопроса такова:
Пишу бота, хочу чтобы вместо документа Word'а он отправлял текст из этого документа.
С помощью python-docx получилось вытащить сам текст, но теряется изначальное форматирование текста (хочется чтобы где текст в документе выделялся полужирным, в сообщении бота текст также был полужирный) а также пропадают ссылки из текста.
Пример кода (но тут все по методичке):
doc = docx.Document('document.docx')
text = []
for docparagraph in doc.paragraphs:
text.append(docparagraph.text)
 await bot.send_message(message.chat.id, '\n'.join(text))


Есть ли возможность оправить в сообщении текст документа с сохранением форматирования ?

Уточнение: таких файлов достаточно много и к каждому прописывать свой стиль не вариант.
  • Вопрос задан
  • 447 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну смотри. В DOCX текст хранится в виде интервалов (runs), где интервал - это последовательность символов с одинаковым форматированием. Можно получить список интервалов в абзаце через свойство docparagraph.runs.
А дальше для каждого интервала определяешь интересующие тебя свойства форматирования, достаёшь текст, и имитируешь это форматирование с помощью markdown (ну или какие там ещё языки разметки поддерживает нужный тебе мессенджер). Результаты склеиваешь в одну строку и отправляешь.

Кое-что есть в документации, но она явно неполная, так что остальное придётся искать в исходниках классов Paragraph и Run.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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