【问题标题】:Doc, rtf and txt reader in pythonpython中的Doc、rtf和txt阅读器
【发布时间】:2010-07-19 06:22:59
【问题描述】:

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

【问题讨论】:

标签: python python-3.x


【解决方案1】:

你可以阅读一个文本文件

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

尝试PyRTF 获取 RTF 文件。我认为阅读 MS Word .doc 文件是不太可能的,除非您在 Windows 上并且您可以使用一些本机 MS 界面来读取这些文件。 This article 声称展示了如何编写与 Word 交互的脚本。

【讨论】:

    【解决方案2】:

    尝试为 word 和 writer 文档做这种简单的事情时,我真的很头疼。

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

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

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

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

    (如果您想自动化它,请使用子进程从 Python 调用它)。

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

    (Credit)

    【讨论】:

      【解决方案3】:

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

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

      Microsoft Word 文档文件(通常以.doc 为后缀)是另一种野兽,因为该格式是专有的。我对 Python 转换器没有太多经验,但有一些命令行转换器(如 wvHTML)做得不错。 This question 讨论了很多。还可以选择让 MS-Word 自己通过。像 Jesse 提到的 COM 接口。

      【讨论】:

        【解决方案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()
        

        【讨论】:

        • 不要使用|。有一个or
        【解决方案5】:

        有一个名为 'docx'python 模块,您可以使用它来读取 .docx 文件。但是您将无法阅读 .doc,因为它现在几乎已经过时了。

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

        你可以在 Pypi 上找到它Here

        【讨论】:

          猜你喜欢
          • 2023-04-01
          • 1970-01-01
          • 2012-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多