2011-08-17 59 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.

相關問題