2011-08-17 57 views
5

我试图提取DOCX Word文档中的表格内容,以及男孩我是xml/xpath的新手。从python的DOCX Word文档中提取表格

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

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

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

+0

你从哪里弄来的docx?你能提供一个URL吗? –

+0

你应该寻找一个python xml教程。根据消息来源,opendocx函数返回一个xml文档。 python-docx库中的其余功能是围绕lxml python库的包装器,在http://lxml.de/中是这样的。 –

+0

@Spencer Rathbun:下面的代码不会引发错误,但奇怪的是[] 'tableList = document.xpath('// tbl')' 'print tableList' 这是一些DOCX功能,我不理解? – mgierdal

回答

3

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

lxml xpath method有命名空间的东西的详细信息。向下看链接中的页面以传递名称空间字典和其他详细信息。

如上他的评论中所解释mgierdal:

tblList = document.xpath('//w:tbl', namespaces=document.nsmap) works like a dream. So, as I understand it w: is a shorthand that has to be expanded to the full namespace name, and the dictionary for that is provided by document.nsmap.

相关问题