【发布时间】:2010-07-19 06:22:59
【问题描述】:
像csv.reader()一样,还有其他函数可以在Python中读取.rtf、.txt、.doc文件吗?
【问题讨论】:
标签: python python-3.x
像csv.reader()一样,还有其他函数可以在Python中读取.rtf、.txt、.doc文件吗?
【问题讨论】:
标签: python python-3.x
你可以阅读一个文本文件
txt = open("file.txt").read()
尝试PyRTF 获取 RTF 文件。我认为阅读 MS Word .doc 文件是不太可能的,除非您在 Windows 上并且您可以使用一些本机 MS 界面来读取这些文件。 This article 声称展示了如何编写与 Word 交互的脚本。
【讨论】:
尝试为 word 和 writer 文档做这种简单的事情时,我真的很头疼。
有一个简单的解决方案:在命令行调用openoffice将你的目标文档转换为文本,然后将文本加载到Python中。
我尝试的其他转换工具产生的输出不可靠,而其他 Python oOo 库过于复杂。
如果您只想获取文本以便处理它,请在 linux 命令行上使用它:
soffice --headless --convert-to txt:Text /path_to/document_to_convert.doc
(如果您想自动化它,请使用子进程从 Python 调用它)。
它将创建您可以简单地加载到 python 中的文本文件。
(Credit)
【讨论】:
csv 是一种特定格式,因此您需要一个“解析器”来读取它。正如您所提到的,这就是 csv 模块所提供的。文本文件(通常以.txt 为后缀)没有任何固定的“格式”,因此您可以在opening 之后阅读它们(Jesse 的回答提供了详细信息)。 CSV 文件通常是文本文件,因此您的区分不是很准确。
至于 RTF,有很多。有关详细信息,请参阅this answer。不过,Jesse 提到的 PyRTF 似乎是最受欢迎的。
Microsoft Word 文档文件(通常以.doc 为后缀)是另一种野兽,因为该格式是专有的。我对 Python 转换器没有太多经验,但有一些命令行转换器(如 wvHTML)做得不错。 This question 讨论了很多。还可以选择让 MS-Word 自己通过。像 Jesse 提到的 COM 接口。
【讨论】:
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()
【讨论】:
|。有一个or。
有一个名为 'docx' 的 python 模块,您可以使用它来读取 .docx 文件。但是您将无法阅读 .doc,因为它现在几乎已经过时了。
from docx import Document
doc = Document(filepath)
# Reading Data
data = doc.paragraphs
tables = doc.tables
你可以在 Pypi 上找到它Here。
【讨论】: