Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从.doc文件检索纯文本?_Python_Ms Word - Fatal编程技术网

如何使用Python从.doc文件检索纯文本?

如何使用Python从.doc文件检索纯文本?,python,ms-word,Python,Ms Word,如何从.doc文件中提取纯文本?(MSDoc 97-03)我可以从.docx中提取纯文本,但不能从.doc中提取 我已经为.doc准备了一个几乎可以工作的代码,它是这样的 if file.endswith('.doc'): app = win32com.client.Dispatch('Word.Application') doc = app.Documents.Open(fullpath) docText

如何从.doc文件中提取纯文本?(MSDoc 97-03)我可以从.docx中提取纯文本,但不能从.doc中提取

我已经为.doc准备了一个几乎可以工作的代码,它是这样的

        if file.endswith('.doc'):
            app = win32com.client.Dispatch('Word.Application')
            doc = app.Documents.Open(fullpath)
            docText = (doc.Content)
            print docText
            app.Quit()
问题是,每当我运行此代码时,我都会得到纯文本和一个错误,如下所示:

这是一个测试代码的测试文件:

Traceback (most recent call last):
  File "C:\Users\IdaLim\Desktop\MyTestCode\FileIO.py", line 76, in <module> doc =                  

  app.Documents.Open(fullpath) File "C:\Python27\lib\site-
  packages\win32com\client\dynamic.py", line 522, in __getattr__ raise 
  AttributeError("%s.%s"% (self._username_, attr)) AttributeError: Word.Application.Documents
回溯(最近一次呼叫最后一次):
文件“C:\Users\IdaLim\Desktop\MyTestCode\FileIO.py”,第76行,在doc=
app.Documents.Open(完整路径)文件“C:\Python27\lib\site-
packages\win32com\client\dynamic.py”,第522行,在
AttributeError(“%s.%s”%(self.\u username,attr))AttributeError:Word.Application.Documents
最重要的是,如果纯文本包含非字母字符,如“!@#$%”,程序将不会输出纯文本,并给出一个错误,表示Unicode或其他不兼容的字符


你知道有哪种功能代码可以从.doc文件中几乎完美地检索纯文本吗?

我找到了解决方案

我成功地将.doc文件转换为.txt文件,并将所有特殊字符和编码转换为.txt格式。代码如下所示。我想您可以做的(如果需要)是读取新创建的文本文件,然后将其存储在python程序的变量中。从那里你可以用它做任何你想做的事情

import win32com.client 
import os
import re
rootdir ='C:\Users\IdaLim\Desktop\docs'     
try:
    app = win32com.client.Dispatch('Word.Application')
    app.Visible = True
    for subdir, dirs, files in os.walk(rootdir):
        for file in files:
            fullpath = os.path.join(*[subdir, file])
            if file.endswith(".doc"):
                out_name = file.replace("doc", r"txt")
                in_file = os.path.abspath(rootdir + "\\" + file)
                out_file = os.path.abspath(rootdir + "\\" + out_name)
                doc = app.Documents.Open(in_file)
                content = doc.Content.Text
                print 'Exporting', out_file
                doc.SaveAs(out_file, FileFormat=7)
                doc.Close()
except Exception, e:
    print e
finally:
    app.Quit()

win32com似乎是正确的方向,这是来自Microsoft的,这可能有助于您与文档中的对象进行交互。此外,您可能需要检查示例代码以执行类似的操作。