如何从.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文件中完美检索纯文本?
好吧,我找到了该解决方案的解决方法。
我将.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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句