我正在尝试在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')
答案 0 :(得分:0)
您真的想要使用库来读取/编写docx文件,而不是试图将它们作为原始XML处理。 pypi模块docx
进行了粗略的搜索,但我还没有使用过这个模块,所以我不能认可它:
https://pypi.python.org/pypi/docx/0.2.4
我有处理从其他编程语言处理MS Office文档的(不幸)经验,并且花时间找到好的图书馆真的得到了回报。
俗话说“不要重新发明轮子"我认为在操作非平凡的文件格式时,这绝对是正确的。如果存在一个有点成熟的库来完成这项工作,请使用它!
答案 1 :(得分:0)
您需要替换zip存档中的文件。没有“简单”的方法来实现这一目标。以下是一个应该有用的问题:
答案 2 :(得分:0)
您正在尝试的是危险的,因为您正在处理较低级别的高杠杆docx文件。如果您真的想这样做,只需使用@shahvishal建议的overwriting file in ziparchive提示。
但除非您完全了解docx格式的所有细节,否则我的建议是:不要那样做。假设在内部字段或属性中出于任何原因,字符串{text}
。您可能会以意外的方式更改文件,导致文件被破坏后立即甚至更糟(Word无法再处理它)。
如果您在安装了单词的Windows计算机上进行处理,您当然可以尝试使用自动化来使用Microsoft Word处理该文件。不幸的是,我很久以前就这么做了,无法提供有用的链接。你需要: