【问题标题】:Extracting tables from a DOCX Word document in python从python中的DOCX Word文档中提取表格
【发布时间】:2021-02-18 19:50:43
【问题描述】:

我正在尝试提取 DOCX Word 文档中的表格内容,我是 xml/xpath 的新手。

from docx import *
document = opendocx('someFile.docx')
tableList = document.xpath('/w:tbl')

这会触发“XPathEvalError:未定义的命名空间前缀”错误。我敢肯定,这只是开发脚本时的第一个期望。不幸的是,我找不到python-docx 的教程。

您能否提供一个表格提取的示例?

【问题讨论】:

  • 你从哪里得到 docx 的?可以提供网址吗?
  • 你应该找一个 python xml 教程。根据来源,opendocx 函数返回一个 xml 文档。 python-docx 库中的其余函数是 lxml python 库的包装器,在 lxml.de 或在我看来。
  • @Spencer Rathbun:以下代码不会引发错误,但奇怪的是会产生 [] tableList = document.xpath('//tbl') print tableList 这是我不明白的一些 DOCX 功能吗?
  • @mgierdal 看起来是正确的结果。它在 tbl 的 xml 树中搜索,但没有找到它。所以,你的结果集是空的。我建议print document 拿出你的整个xml,看看你是否真的有你期望的标签。如果是这样,那么您的函数调用在某种程度上是不正确的。在 lxml 库中找到有关 xpath 函数的文档,看看是否有格式错误的命令。
  • @Spencer Rathbun:使用 print etree.tostring(document) 打印会显示 标签。我还尝试了'/tbl'(也产生空)和带有额外参数namespaces=document.nsmap 的任何一种形式都无济于事。我发现它前面有一个命名空间速记“w”什么是冒犯性的。

标签: python xpath ms-word docx


【解决方案1】:

经过一番反复,我们发现需要一个命名空间才能使其正常工作。 xpath 方法是合适的解决方案,它只需要先传入文档命名空间。

lxml xpath method 包含命名空间内容的详细信息。查看链接中的页面以传递命名空间字典和其他详细信息。

正如 mgierdal 在上面的评论中解释的那样:

tblList = document.xpath('//w:tbl', namespaces=document.nsmap) 有效 像做梦一样。所以,据我了解 w: 是一个简写,必须是 扩展为完整的命名空间名称,其字典为 由 document.nsmap 提供。

【讨论】:

    【解决方案2】:

    您可以使用 python-docx 从 docx 中提取表格。检查以下代码:

    from docx import Document()
    document = Document(file_path)
    
    tables = document.tables
    

    【讨论】:

      【解决方案3】:

      首先安装@abdulsaboor 提到的python-docx

      pip install python-docx
      

      那么这段代码应该这样做:

      from docx import Document
      
      
      document = Document('myfile.docx')
      
      for table in document.tables:
          print()
          for row in table.rows:
              for cell in row.cells:
                  print(cell.text, end=' ')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-02
        • 2021-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 1970-01-01
        相关资源
        最近更新 更多