python docx 替换文字_在.docx文件-Python中查找和替换文本

我一直在寻找一种方法来查找和替换docx文件中的文本,但运气不好。我试过docx模块,但没能成功。最后,我使用zipfile模块并替换docx存档中的document.xml文件,得出了下面描述的方法。为此,您需要一个模板文档(docx),其中的文本要替换为不可能与文档中任何其他现有或未来文本匹配的唯一字符串(例如,“在XXXMEETDATEXXX上与xxxclientnamexx的会议进行得非常顺利。”)。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”:“Joe Bob”,“XXXMEETDATEXXX”:“2013年5月31日”})。

步骤2)使用zipfile模块打开模板docx文件。

步骤3)使用追加访问模式打开新的docx文件。

步骤4)从模板docx文件中提取document.xml(所有文本所在的位置),并将该xml读取到文本字符串变量。

步骤5)使用for循环将xml文本字符串中字典中定义的所有文本替换为新文本。

步骤6)将xml文本字符串写入新的临时xml文件。

步骤7)使用for循环和zipfile模块将模板docx存档中的所有文件复制到新的docx存档中,word/document.xml文件除外。

步骤8)将包含替换文本的临时xml文件作为新的word/document.xml文件写入新的docx存档。

步骤9)关闭模板和新的docx存档。

步骤10)打开新的docx文档,欣赏替换的文本!

--Edit--第7行和第11行缺少右括号“)”

你可能感兴趣的:(python,docx,替换文字)