saving back to a docx xml file with python
我试图在docx文件上进行查找和替换,同时仍保持格式设置。
通过阅读这些内容,最好的方法似乎是在文档的xml文件中执行查找/替换。
我可以加载xml文件并在其上查找/替换,但是不确定如何写回。
docx:
1 | Hello {text}! |
Python:
1 2 3 4 5 | import zipfile zip = zipfile.ZipFile(open('test.docx', 'rb')) xmlString = zip.read('word/document.xml').decode('utf-8') xmlString.replace('{text}', 'world') |
您尝试的操作很危险,因为您正在较低级别处理高级别的docx文件。如果您确实要这样做,请按照@shahvishal的建议使用ziparchive中覆盖文件的提示。
但是,除非您完全了解docx格式的所有详细信息,否则我的建议是:不要这样做。假设出于任何原因,内部字段或属性中都存在字符串
如果在安装了Word的Windows机器上进行处理,则当然可以尝试使用自动化功能通过Microsoft Word处理文件。不幸的是,我只是很久以前才做的,无法提供有用的链接。你会需要:
- pywin30模块的常识
- 对MS / WORD的自动化接口有足够的了解。希望它的文档很好,并提供许多示例,前提是您已完整安装了Microsoft Office,包括宏帮助。
您将需要替换zip存档中的文件。没有实现这一目标的"简单"方法。以下是一个应该有所帮助的问题:
覆盖ziparchive中的文件
您确实要使用一个库来读取/写入docx文件,而不是尝试仅将它们作为原始XML处理。 pypi模块
https://pypi.python.org/pypi/docx/0.2.4
我曾经经历过(不幸的)处理其他编程语言中的MS Office文档的经历,并花时间找到了真正有回报的好的库。
俗话说"不要浪费时间",当处理非平凡的文件格式时,我认为这绝对是正确的。如果存在一个成熟的库来完成这项工作,请使用它!