使用python保存回docx xml文件

时间:2015-11-19 12:44:36

标签: python xml

我正在尝试在docx文件上执行查找和替换,同时仍然保持格式化。

通过阅读本文,最好的方法似乎是在文档的xml文件中执行查找/替换。

我可以在xml文件中加载并查找/替换它,但不确定如何将其写回。

的docx:

Hello {text}!

蟒:

import zipfile

zip = zipfile.ZipFile(open('test.docx', 'rb'))
xmlString = zip.read('word/document.xml').decode('utf-8')
xmlString.replace('{text}', 'world')

3 个答案:

答案 0 :(得分:0)

您真的想要使用库来读取/编写docx文件,而不是试图将它们作为原始XML处理。 pypi模块docx进行了粗略的搜索,但我还没有使用过这个模块,所以我不能认可它: https://pypi.python.org/pypi/docx/0.2.4

我有处理从其他编程语言处理MS Office文档的(不幸)经验,并且花时间找到好的图书馆真的得到了回报。

俗话说“不要重新发明轮子"我认为在操作非平凡的文件格式时,这绝对是正确的。如果存在一个有点成熟的库来完成这项工作,请使用它!

答案 1 :(得分:0)

您需要替换zip存档中的文件。没有“简单”的方法来实现这一目标。以下是一个应该有用的问题:

overwriting file in ziparchive

答案 2 :(得分:0)

您正在尝试的是危险的,因为您正在处理较低级别的高杠杆docx文件。如果您真的想这样做,只需使用@shahvishal建议的overwriting file in ziparchive提示。

但除非您完全了解docx格式的所有细节,否则我的建议是:不要那样做。假设在内部字段或属性中出于任何原因,字符串{text}。您可能会以意外的方式更改文件,导致文件被破坏后立即甚至更糟(Word无法再处理它)。

如果您在安装了单词的Windows计算机上进行处理,您当然可以尝试使用自动化来使用Microsoft Word处理该文件。不幸的是,我很久以前就这么做了,无法提供有用的链接。你需要:

  • 关于pywin30模块的一般知识
  • 对MS / WORD的自动化界面有足够的了解。希望它的文档很好用很多例子,只要你有完整的Microsoft Office安装,包括宏帮助