【问题标题】:Difficulties extracting XML from Word document with Python使用 Python 从 Word 文档中提取 XML 的困难
【发布时间】:2015-02-12 19:29:14
【问题描述】:

我正在尝试使用this 网页上的代码使用 Python 从 Word 文档中提取 XML。

我首先创建了一个名为 test.docx 的测试文档。然后我运行了以下代码:

import zipfile
from lxml import etree

def getXml(docxFilename):
    zip = zipfile.ZipFile(open(docxFilename))
    xmlContent = zip.read("word/document.xml")
    return xmlContent

def getXmlTree(xmlContent):
    return etree.fromstring(xmlContent)

testXml = getXml("test.docx")
print(getXmlTree(testXml))

运行此代码会产生错误消息“文件不是 zip 文件”。我做错了什么?

【问题讨论】:

  • 哪个版本的 Python?您是否也搜索过“文件不是 zip 文件”并查看了这些问题/答案?
  • 我使用的是 Python 3.4。是的,我尝试了谷歌搜索,虽然有很多关于这个错误的讨论,但我没有发现任何关于解压缩 Word 文档的特殊内容。
  • 我在 cygwin python 2.7.8 上测试了你的脚本,它运行良好。您可以在 docx 文件上使用“解压缩”实用程序吗?也许它已损坏。
  • 尝试以“rb”模式打开文件
  • @patrickmdnet 这听起来很愚蠢,我认为 zipfile.ZipFile 进行了解压缩。如何解压缩文档? @tdelaney 当我尝试添加“rb”模式时,出现错误ZipFile() requires mode "r", "w", or "a"。当我使用模式“r”时,我得到了和以前一样的错误。但是,当我使用模式“w”或模式“a”时,出现了一个新错误:"There is no item named 'word/document.xml' in the archive"

标签: python xml docx


【解决方案1】:

您需要将 docx 文件的路径作为参数传递,而不是特别是 docx 文件。 压缩文件并以zip格式制作路径

例如: "D:/Users/John/docs/data.zip"

【讨论】: