2010-07-19 63 views
8

csv.reader()在那裏它可以在Python閱讀.rtf.txt.doc文件的任何其他功能呢?文檔,RTF和TXT蟒讀者

+0

相關:[從python中的MS word文件中提取文本](http://stackoverflow.com/q/125222/4279) – jfs 2015-10-08 07:59:30

回答

9

您可以閱讀

txt = open("file.txt").read() 

一個文本文件,嘗試PyRTF爲RTF文件。我認爲閱讀MS Word .doc文件是不太可能的,除非你在Windows上,並且你可以使用一些本地MS接口來閱讀這些文件。 This article聲稱顯示如何編寫與Word接口的腳本。

4

csv是一種特定的格式,所以你需要一個「解析器」來閱讀它。這就是你提到的csv模塊所提供的。文本文件(通常後綴爲.txt)沒有任何固定的「格式」,因此您可以在open之後閱讀它們(Jesse的答案給出了詳細信息)。 CSV文件通常是文本文件,因此您的區別不是很準確。

至於RTF,有一堆。詳細信息請參見this answer。 Jesse提到的PyRTF事物似乎是最受歡迎的。

Microsoft Word文檔文件(通常後綴爲.doc)是另一種野獸,因爲格式是專有的。我對Python轉換器沒有太多的經驗,但是有一些命令行的(如wvHTML)可以做一些體面的工作。 This question討論了不少。也有選擇讓MS-Word本身爲你做。像Jesse這樣的COM接口已經提到過。

3

我有一個真正的頭痛試圖做這個簡單的事情的單詞和作家文件。

有一個簡單的解決方案:在命令行調用openoffice將目標文檔轉換爲文本,然後將文本加載到Python中。

其他轉換工具我嘗試過產生不可靠的輸出,而其他Python ooo庫太複雜。

如果你只是想在文本得到這樣你就可以處理它,用這個Linux命令行:

soffice --headless --convert-to txt:Text /path_to/document_to_convert.doc 

(使用子,如果你想自動從Python中調用它)。

它會創建文本文件,你可以簡單地加載到Python。

Credit

4
import win32com.client 
if tmpFile.endswith('.xml') or tmpFile.endswith('.doc') or tmpFile.endswith('.docx'): 
     app = win32com.client.Dispatch("Word.Application") 
     app.Visible = False 
     app.Documents.Open(tmpFile) 
     doc = app.ActiveDocument 

     docText = doc.Content.Text 
     print(docText) 
     doc.Close() 
     app.Quit() 
+2

不要使用'|'。有一個'或'的。 – FunkySayu 2015-08-17 11:31:28

0

有一個叫Python模塊'DOCX',你可以用它來閱讀的.docx文件。你將無法閱讀.doc,因爲它現在幾乎已經過時了。

from docx import Document 
doc = Document(filepath) 
# Reading Data 
data = doc.paragraphs 
tables = doc.tables 

你可以在Pypi上找到它Here