Задать вопрос
rudieduddie
@rudieduddie
Python-dev and student

Как скопировать часть одного документа docx в другой из Python?

Здравствуйте, я столкнулся с каверзной, но очень интересной задачей.

Мне нужно написать функцию на python, которой передают 5 значений:
source_docx # path - docx файл, из которого нужно забрать данные
outputdocx # path - docx, в который они будут вставлены
trimStart # str - фраза, с которой нужно обрезать данные (к примеру, "глава 1")
trimEnd # str - фраза, по которую данные будут обрезаны (к примеру, "глава 2")
relpace # str - строчка в outputdocx, которую нужно заменить ( к примеру {{replaceme}})


Самый сок этого всего - необходимо сохранить форматирование, а также перенести все таблицы, ссылки, изображения и бог знает что ещё, что находится между trimStart и trimEnd

Я бы хотел спросить у опытных людей, какой подход избрать, чтобы пролить минимум слёз :)

За время изучения вопроса, я уже понял, что библиотека python-docx не позволяет сохранить стили и переносить изображения, так как структура документа-донора не известна заранее.

Это действие очень просто совершить человеку - буфер обмена в Windows сохраняет и форматирование и все элементы документа. Я склоняюсь к записи действий с помощью кого-нибудь вроде win32com.

Также есть библиотека C# Syncfusion, в которой такая find and replace уже реализована, но ... python =(

Ещё есть макросы, но я пока совсем не понимаю, как их привязать к функции в python.

В общем, если вы сталкивались с такой задачей или у вас есть какие-то мысли - помогите мне, пожалуйста
  • Вопрос задан
  • 1143 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
@PavelMos
Если именно из файла, то, скорей всего, напрямую никак. Только разархивировать .DOCX и вручную искать в соответствующих файлах содержимое , описывающими текст в начале и в конце фразы. по словам и тегам. Но не факт, что скопированный текст можно будет сохранить как валидный DOCX, потому что в DOCX очень сложная структура. То есть нужно будет еще много чего дополнительно создать, прежде чем запаковать это в DOCX.

Думаю, это лучше делать встроенными вордовскими средствами.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Берете что-то вроде python-docx и итерируетесь по параграфам и прочим блокам. Пока не нашли trimStart - всё к чертям удаляете :) Т.к. нужное вы не трогаете, есть вероятность, что верстка не поедет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽