2011-08-17 10 views
5

Sto cercando di estrarre un contenuto di tabelle nel documento DOCX Word e il ragazzo sono nuovo in xml/xpath.Estrazione di tabelle da un documento di Word DOCX in python

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

Questo innesca "XPathEvalError: non definito namespace prefix" errore. Sono sicuro che sarà il primo a aspettarsi durante lo sviluppo della sceneggiatura. Purtroppo, non ho trovato un tutorial per python-docx.

Potrebbe gentilmente fornire un esempio di estrazione della tabella?

+0

Dove hai preso DOCX? Puoi fornire un URL? –

+0

Dovresti cercare un tutorial xml python. La funzione opendocx restituisce un documento xml, secondo la fonte. Il resto delle funzioni nella libreria python-docx sono wrapper attorno alla libreria python lxml, su http://lxml.de/ o così mi sembra. –

+0

@Spencer Rathbun: il seguente codice non genera errori, ma restituisce stranamente [] 'tableList = document.xpath ('// tbl')' 'print tableList' Questa è una funzione DOCX che non capire? – mgierdal

risposta

3

Dopo alcuni avanti e indietro, abbiamo scoperto che era necessario uno spazio dei nomi per far funzionare correttamente. Il metodo xpath è la soluzione appropriata, è sufficiente che lo spazio dei nomi del documento sia passato per primo.

Il lxml xpath method ha i dettagli per lo spazio dei nomi. Guarda in basso la pagina nel link per passare un dizionario degli spazi dei nomi e altri dettagli.

Come spiegato da mgierdal nel suo commento sopra:

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.