2014-07-23 56 views
1

我試圖讀取DOCX文件,用下面的代碼文件:讀取DOCX與python2.7

from docx import Document 
doc = Document('test.docx') 

但是,當我嘗試打印它,我得到這個:

<docx.api.Document object at 0x02952C70> 

如何讀取文件內的內容?

我看到最近更改了docx,所以舊的問題/答案不再適用。

+0

您是否嘗試訪問段落? –

+0

不,我該怎麼做@ IgnacioVazquez-Abrams? – user3511563

+2

您是否嘗試過在文檔中告訴您的內容? –

回答

0

它可以不使用docx模塊提取使用Python的Word文件的信息。 One solution, (there are many), from etiennedocx的一個非常基本的版本,它可能會刪除您收到的十六進制數字。但是,就像SebasSBM的回答一樣,它不適用於其他功能,比如表格等。

如果仍然不起作用,我會建議看看these answers;也許其中一個仍然與您的新docx格式相關。

4

退房這裏的文檔對象的結構:

Source code for docx.api

例如,如果你想獲得的財產「段落」:

doc = Document('test.docx') 
paragraphs = doc.paragraphs() 

我希望這將有助於。

編輯:我已經在python-docx's gitHub repository發現這個片斷和編輯它一點點的位置:

document = docx.Document(filename) 
docText = '\n\n'.join([ 
    paragraph.text.encode('utf-8') for paragraph in document.paragraphs 
]) 
print docText 

的加入()函數接收返回的數組中的UTF-8從段落編碼字符串列表由段落財產。所以結果如下:

paragraph 1 

paragraph 2 

paragraph 3 

它看起來像這樣,但它不打印表格,頁眉或頁腳。

編輯:這個鏈接是有關Python-DOCX所有文件的主要指標:

python-docx 0.7.4 documentation

+0

好的,但我仍然得到十六進制代碼,而不是純文本 – user3511563

+0

我編輯了答覆新的信息和代碼片段。一探究竟。 – SebasSBM

+0

謝謝,但我得到特殊字符的問題(例如,而不是得到são,我得到s├úo)。 – user3511563