如何使用Python从.doc文件检索纯文本?
如何从.doc文件中提取纯文本?(MSDoc 97-03)我可以从.docx中提取纯文本,但不能从.doc中提取 我已经为.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
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的,这可能有助于您与文档中的对象进行交互。此外,您可能需要检查示例代码以执行类似的操作。