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

时间:2014-07-22 06:55:14

标签: 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.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

最重要的是,如果纯文本包含非字母字符,例如“!@#$%”,程序将不会输出纯文本,并会出现错误,指出不兼容的Unicode或其他内容。

您是否知道任何有效的代码可以从.doc文件中几乎完美地检索纯文本?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了解决方案的解决方法。

我成功地将.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()