2016-03-15 143 views
2

我得到了一份工作申請測試,我的交易是讀取一些.doc文件。有沒有人知道圖書館這樣做?我已經開始使用原始的Python代碼:使用python閱讀.doc文件

f = open('test.doc', 'r') 
f.read() 

但這並不返回一個友好的字符串我需要將其轉換爲UTF-8

編輯:我只是想擺脫這個文件中的文本

回答

3

您可以使用python-docx2txt庫從Microsoft Word文檔中讀取文本。這是對python-docx庫的改進,另外還可以從鏈接,頁眉和頁腳中提取文本。它甚至可以提取圖像。

您可以通過運行:pip install docx2txt進行安裝。

讓我們下載和閱讀here第一微軟文檔:

import docx2txt 
my_text = docx2txt.process("test.docx") 
print(my_text) 

這裏是終端輸出的屏幕截圖,上面的代碼:

enter image description here

+5

不幸的是只有.docx文件被docx2txt讀取我只有.doc文件 –

+0

是的,它不適用於.doc文件。 – SVK

7

人們可以使用textract庫。 它照顧兩個「DOC」以及「DOCX」

import textract 
text = textract.process("path/to/file.extension") 

你甚至可以用「antiword」(命令和apt-get安裝antiword),然後轉換成DOC首先進入DOCX,然後通過docx2txt閱讀。

antiword filename.doc > filename.docx 

最終,後端textract正在使用antiword。

+0

Antiword似乎無法在windows-64位上工作,對此有何看法? –

+1

@ bones.felipe Yaa! Antiword是一款基於Linux的命令行工具。 如果您在Windows 10上使用Anniversary Update,建議您在Windows上使用Ubuntu上的bash [1],並使用Windows上的Unix命令愉快地進行操作! [1] http://www.windowscentral.com/how-install-bash-shell-command-line-windows-10 –

+1

我太遲了,但Antiword也有[Windows版本](http:// www -stud.rbi.informatik.uni-frankfurt.de/~markus/antiword/)。還有[catdoc](https://www.wagner.pp.ru/~vitus/software/catdoc/),但它有一個DOS版本,不支持長文件名。 –

0

先決條件:

安裝antiword:命令和apt-get安裝antiword

安裝的docx:PIP安裝DOCX

from subprocess import Popen, PIPE 

from docx import opendocx, getdocumenttext 
from cStringIO import StringIO 
def document_to_text(filename, file_path): 
    cmd = ['antiword', file_path] 
    p = Popen(cmd, stdout=PIPE) 
    stdout, stderr = p.communicate() 
    return stdout.decode('ascii', 'ignore') 

print document_to_text('your_file_name','your_file_path') 

公告 - 蟒蛇,DOCX的新版本中刪除此功能。確保pip安裝docx而不是新的python-docx