2011-08-17 20 views
5

私はDOCX Word文書でテーブルの内容を抽出しようとしています。少年はxml/xpathを初めて使っています。PythonのDOCX Word文書からテーブルを抽出する

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

これにより、「XPathEvalError:Undefined namespace prefix」エラーが表示されます。私はそれがスクリプトを開発している間に期待する最初のものだと確信しています。残念ながら、私は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.

関連する問題