Итерация текста управления содержимым в документе Python в порядке документовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Итерация текста управления содержимым в документе Python в порядке документов

Сообщение Anonymous »


Итак, я создаю скрипт Python, который будет перебирать все абзацы в документе Word и конвертировать их в двуязычный формат, например:

Абзац 1

Абзац 2

Будет это:
Источник Цель Абзац 1 Абзац 1 Абзац 2 Абзац 2
Для этого я создал приведенную ниже функцию, используя Python-docx:

def BilingualText(Doc: Document, SourceRight: bool) -> Нет: """Проходит по всем абзацам документа и превращает их в двуязычную таблицу. По сути, эмулирует функцию «Преобразовать в таблицу» в Word.""" Пар: Параграф Табл: Таблица для номинала в параграфах документа: # добавляем новую таблицу и перемещаем ее перед абзацем Таблица = Doc.add_table(1, 2) Par._p.addprevious(Tbl._element) LeftCell: _Cell = Tbl.cell(0, 0) RightCell: _Cell = Tbl.cell(0, 1) LeftPar: Абзац = LeftCell.paragraphs[0] RightPar: Абзац = RightCell.paragraphs[0] CopyParagraphFormatting(LeftPar, Par) КопироватьПараграфФорматтинг(РайтПар, Пар) # после копирования форматирования копируем все содержимое и скрываем при необходимости для контента в Par.iter_inner_content(): если isinstance(Содержимое, Выполнить): LeftRun = LeftPar.add_run(Content.text) CopyRunFormatting(LeftRun, Содержимое) RightRun = RightPar.add_run(Content.text) CopyRunFormatting(RightRun, Содержимое) если SourceRight: RightRun.font.hidden = Истина еще: LeftRun.font.hidden = Истина elif isinstance (Содержимое, Гиперссылка): LeftHpl: Гиперссылка = Добавитьгиперссылку( LeftPar, Content.address, Content.text ) RightHpl: Гиперссылка = Добавитьгиперссылку( RightPar, Content.адрес, Content.text ) если SourceRight: для запуска в RightHpl.runs: run.font.hidden = Истина еще: для запуска в LeftHpl.runs: run.font.hidden = Истина # Удаляем исходный абзац и идем дальше Par._p.getparent().remove(Par._element) Проблема в том, что функция iter_inner_content() перебирает только прогоны и гиперссылки (и все прогоны внутри них). Однако иногда я получаю документы с элементами управления содержимым в формате Rich или Plain Text, и они, к сожалению, не обрабатываются этой функцией, и она либо оставляет пустое пространство, если элемент управления содержимым находился внутри абзаца, либо пропускает абзац целиком, если весь абзац был элементом управления контентом.

И здесь возникает вопрос: как я могу получить текст из этих элементов управления содержимым в порядке документов, поскольку он предназначен для перевода, поэтому сохранение порядка документов здесь чрезвычайно важно.

Сохранять элемент управления содержимым нетронутым не требуется. Если я смогу найти решение, которое позволит мне извлечь текст внутри него и просто превратить его в обычный текст, просматриваемый в таблице, этого будет достаточно.

Большое спасибо за любую помощь, которую вы мне можете оказать!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»