Найти и заменить текст в файле .docx - Python

Мы занимались поиском метода для поиска и замены текста в файле DOCX без особой удачи. Я'я попробовал модуль docx и не смог заставить его работать. В конце концов я разработал метод, описанный ниже, используя модуль zipfile и заменив файл document.xml в архиве docx. Чтобы это работало, вам нужен шаблонный документ (docx) с текстом, который вы хотите заменить как уникальные строки, которые могут не соответствовать ни одному другому существующему или будущему тексту в документе (например, "."Встреча с XXXCLIENTNAMEXXX XXXMEETDATEXXX прошла очень хорошо ».).

import zipfile

replaceText = {"XXXCLIENTNAMEXXX" : "Joe Bob", "XXXMEETDATEXXX" : "May 31, 2013"}
templateDocx = zipfile.ZipFile("C:/Template.docx")
newDocx = zipfile.ZipFile("C:/NewDocument.docx", "a")

with open(templateDocx.extract("word/document.xml", "C:/")) as tempXmlFile:
    tempXmlStr = tempXmlFile.read()

for key in replaceText.keys():
    tempXmlStr = tempXmlStr.replace(str(key), str(replaceText.get(key)))

with open("C:/temp.xml", "w+") as tempXmlFile:
    tempXmlFile.write(tempXmlStr)

for file in templateDocx.filelist:
    if not file.filename == "word/document.xml":
        newDocx.writestr(file.filename, templateDocx.read(file))

newDocx.write("C:/temp.xml", "word/document.xml")

templateDocx.close()
newDocx.close()

Мой вопрос в том, чтоне так с этим методом? Я'Я довольно новичок в этом, так что я чувствую, что кто-то другой уже должен был это понять. Что приводит меня к мысли, что с этим подходом что-то не так. Но это работает! Что мне здесь не хватает?

Вот пошаговое руководство по моему мыслительному процессу для всех, кто пытается изучить этот материал:

Шаг 1) Подготовьте словарь Python для текстовых строк, которые вы хотите заменить как ключи, а новый текст - как элементы (например, {"XXXCLIENTNAMEXXX ":"Джо Боб ","XXXMEETDATEXXX ":"31 мая 2013 года}).

Шаг 2) Откройте файл шаблона docx с помощью модуля zipfile.

Шаг 3) Откройте новый новый файл docx с режимом доступа добавления.

Шаг 4) Извлеките document.xml (там, где живет весь текст) из файла шаблона docx и прочитайте xml в текстовую строковую переменную.

Шаг 5) Используйте цикл for, чтобы заменить весь текст, определенный в вашем словаре в текстовой строке xml, новым текстом.

Шаг 6) Запишите текстовую строку XML в новый временный файл XML.

Шаг 7) Используйте цикл for и модуль zipfile, чтобы скопировать все файлы из архива docx шаблона в новый архив docx, КРОМЕ файла word / document.xml.

Шаг 8) Запишите временный xml-файл с замененным текстом в новый архив docx как новый файл word / document.xml.

Шаг 9) Закройте шаблон и новые архивы docx.

Шаг 10) Откройте новый документ в формате docx и наслаждайтесь замененным текстом!

--Edit-- Отсутствуют закрывающие скобки ')' по строкам 7 и 11

Ответы на вопрос(2)

Ваш ответ на вопрос