从python中的DOCX Word文档中提取表

时间:2011-08-17 18:27:31

标签: python xpath ms-word docx

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

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

这会触发“XPathEvalError:Undefined namespace prefix”错误。我确信这只是开发脚本时第一个期待的。很遗憾,我找不到python-docx的教程。

你能提供表格提取的例子吗?

3 个答案:

答案 0 :(得分:3)

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

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

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

  

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

答案 1 :(得分:0)

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

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

tables = document.tables

答案 2 :(得分:0)

首先安装@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=' ')