python批量提取word内信息

python批量提取word内信息,第1张

概述单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来
#Coding:utf-8 import osimport win32comfrom win32com.clIEnt import dispatch,constantsfrom docx import document def parse_doc(f):  """读取doc,返回姓名和行业  """  doc = w.documents.Open( filename = f )  t = doc.tables[0] # 根据文件中的图表选择信息  name = t.Rows[0].Cells[1].Range.Text    situation = t.Rows[0].Cells[5].Range.Text  people = t.Rows[1].Cells[1].Range.Text  Title = t.Rows[1].Cells[3].Range.Text    print name,situation,people,Title  doc.Close() def parse_docx(f):  """读取docx,返回姓名和行业  """  d = document(f)  t = d.tables[0]  name = t.cell(0,1).text  situation = t.cell(0,8).text  people = t.cell(1,2).text  Title = t.cell(1,8).text  print name,Title  if __name__ == "__main__":     w = win32com.clIEnt.dispatch('Word.Application')     # 遍历文件  PATH = "H:\work\aaa" # windows文件路径  doc_files = os.Listdir(PATH)  for doc in doc_files:    if os.path.splitext(doc)[1] == '.docx':      try:        parse_docx(PATH+'\'+doc)      except Exception as e:        print e    elif os.path.splitext(doc)[1] == '.doc':      try:        parse_doc(PATH+'\'+doc)      except Exception as e:        print e
下载安装win32com
from win32com import clIEnt as wc word = wc.dispatch('Word.Application') doc = word.documents.Open('c:/test') doc.SaveAs('c:/test.text',2) doc.Close() word.Quit()

这种方式产生的text文档,不能用python用普通的r方式读取,为了让python可以用r方式读取,应当写成
doc.SaveAs('c:/test',4)
注意:系统执行完成后,会自动产生文件后缀txt(虽然没有指明后缀)。
在xp系统下面,应当,
 open(r'c:\text','r')wdFormatdocument = 0 wdFormatdocument97 = 0 wdFormatdocumentDefault = 16 wdFormatDOSText = 4 wdFormatDOSTextlineBreaks = 5 wdFormatEncodedText = 7 wdFormatFilteredHTML = 10 wdFormatFlatXML = 19 wdFormatFlatXMLMacroEnabled = 20 wdFormatFlatXMLTemplate = 21 wdFormatFlatXMLTemplateMacroEnabled = 22 wdFormatHTML = 8 wdFormatpdf = 17 wdFormatRTF = 6 wdFormatTemplate = 1 wdFormatTemplate97 = 1 wdFormatText = 2 wdFormatTextlineBreaks = 3 wdFormatUnicodeText = 7 wdFormatWebarchive = 9 wdFormatXML = 11 wdFormatXMLdocument = 12 wdFormatXMLdocumentMacroEnabled = 13 wdFormatXMLTemplate = 14 wdFormatXMLTemplateMacroEnabled = 15 wdFormatXPS = 18 
照着字面意思应该能对应到相应的文件格式,如果你是office 2003可能支持不了这么多格式。word文件转HTML有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字 8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用 wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML 明显比wdFormatHTML要干净许多。当然你也可以用任意一种语言通过com来调用office API,比如PHP.
from win32com import clIEnt as wc  word = wc.dispatch('Word.Application')  doc = word.documents.Open(r'c:/test1.doc')  doc.SaveAs('c:/test1.text',4)  doc.Close() import re strings=open(r'c:\test1.text','r').read() result=re.findall('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)',strings) chan=re.sub('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)','()',strings) question=open(r'c:\question','a+') question.write(chan) question.close() answer=open(r'c:\answeronly','a+') for i,a in enumerate(result):  m=re.search('[A-D]',a)  answer.write(str(i+1)+' '+m.group()+'\n') answer.close()chan=re.sub(r'\xa3\xa8\s*[A-D]\s*\xa3\xa9',strings) #不要(),容易引起歧义。
总结

以上是内存溢出为你收集整理的python批量提取word内信息全部内容,希望文章能够帮你解决python批量提取word内信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存