【发布时间】: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”什么是冒犯性的。