Сохранение стилей при замене слов в python-docx

1

Я написал небольшую функцию для замены некоторых слов с помощью python-docx, которая отлично работает, за исключением того, что она меняет элемент стиля, но странно не все из них.

Моя функция (упрощенная):

def template2doc(replace_dict, source, destination):
    """
    Creates a new docx file from a template, replacing keywords withing the template and saving with a new name
    :param replace_dict: dict for replacing each key with its value
    :param source: path to source template file
    :param destination: path to save the result document
    :return: None
    """
    doc = docx.Document(source)

    for key, replacement in replace_dict.items():
        for paragraph in doc.paragraphs:
            if key in par.text:
                paragraph.text = paragraph.text.replace(key, replacement)

    # Save the result
    doc.save(destination)

Это работает для замены слов или предложений, но не сохраняет некоторые элементы стиля для абзаца (выравнивание, размер шрифта, полужирный), но сохраняет другие (например, двойное подчеркивание). Поэтому мой вопрос:

Есть ли лучший способ заменить фразы в файлах docx, сохраняя при этом все прежние стили?

Примечание: я не "женат" на python-docx, любое решение или пакет, который работает, будут делать

Теги:
docx
python-docx

1 ответ

1

Ответ уже указан в этой ссылке. Надеюсь это поможет.

Это сохранит стиль и форматирование абзаца, когда вы замените его другим текстом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню