使用Python保存到docx XML文件
我正在尝试对docx文件进行查找和替换,同时保持格式不变。
根据我的了解,最好的方法似乎是对文档的xml文件进行查找和替换。
我可以加载xml文件并在上面进行查找和替换,但不太确定怎么把它写回去。
docx:
Hello {text}!
python:
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文件。简单搜索了一下,发现了一个叫docx
的pypi模块,但我没有用过这个模块,所以不能推荐它:https://pypi.python.org/pypi/docx/0.2.4
我曾经(不幸地)有过使用其他编程语言处理MS Office文档的经历,花时间找好的库真的很值得。
老话说得好,“不要重新发明轮子”,我觉得在处理复杂文件格式时,这句话特别适用。如果有一个比较成熟的库可以完成这个工作,那就用它吧!
0
你现在尝试的做法是有风险的,因为你在低级别处理一个高级的docx文件。如果你真的想这么做,可以参考在ziparchive中覆盖文件里的建议,正如@shahvishal所说的。
不过,除非你对docx格式的所有细节都非常了解,否则我建议你不要这样做。假设在某个内部字段或属性中有字符串{text}
,你可能会以意想不到的方式改变文件,这样会导致文件损坏,甚至可能让Word无法再打开它。
如果你是在装有Word的Windows机器上处理文件,你可以尝试使用自动化来处理Microsoft Word中的文件。不幸的是,我很久以前做过这件事,现在无法提供有用的链接。你需要:
- 对pywin32模块有基本了解
- 对MS/WORD的自动化接口有足够的知识。希望它的文档很好,有很多示例,只要你安装了完整的Microsoft Office,包括宏帮助