python中的Doc,rtf和txt阅读器

时间:2010-07-19 06:22:59

标签: python python-3.x

csv.reader()一样,是否还有其他可以在Python中读取.rtf.txt.doc文件的函数?

5 个答案:

答案 0 :(得分:8)

您可以使用

阅读文本文件
txt = open("file.txt").read()

尝试PyRTF获取RTF文件。我认为读取MS Word .doc文件是不太可能的,除非你在Windows上,你可以使用一些本机MS接口来读取这些文件。 This article声明如何编写与Word交互的脚本。

答案 1 :(得分:4)

csv是一种特定的格式,因此您需要一个“解析器”来阅读它。这就是你提到的csv模块提供的内容。文本文件(通常以.txt为后缀)没有任何固定的“格式”,因此您可以在open之后阅读它们(Jesse的答案提供了详细信息)。 CSV文件通常是文本文件,因此您的区别不是很准确。

对于RTF,有很多。有关详细信息,请参阅this answer。 Jesse提到的PyRTF似乎是最受欢迎的。

Microsoft Word文档文件(通常以.doc为后缀)是另一种野兽,因为格式是专有的。我对Python转换器没有太多经验,但有一些命令行(如wvHTML)做了一些不错的工作。 This question讨论了很多。还有选择让MS-Word本身为您做到这一点。像Jesse这样的COM界面已经提到过了。

答案 2 :(得分:4)

我真的很头疼,试图为单词和作家文档做这件事。

有一个简单的解决方案:在命令行上调用openoffice将目标文档转换为文本,然后将文本加载到Python中。

我试过的其他转换工具产生了不可靠的输出,而其他Python oOo库太复杂了。

如果您只想获取文本以便处理它,请在linux命令行中使用:

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

(如果你想自动化它,可以使用subprocess从Python调用它。)

它将创建文本文件,您可以简单地加载到python中。

Credit

答案 3 :(得分: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()

答案 4 :(得分:0)

有一个名为' docx' python模块,您可以使用它来阅读 .docx 文件。你不可能阅读.doc,因为它现在几乎已经过时了。

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

你可以在Pypi找到它Here