2010-07-19 55 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