手机
当前位置:查字典教程网 >脚本专栏 >python >python批量提取word内信息
python批量提取word内信息
摘要:单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来#c...

单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来

#coding:utf-8 import os import win32com from win32com.client import Dispatch, constants from 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, situation, people,title if __name__ == "__main__": w = win32com.client.Dispatch('Word.Application') # 遍历文件 PATH = "H:workaaa" # 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'xa3xa8s*[A-D]s*xa3xa9','()',strings) #不要(),容易引起歧义。

【python批量提取word内信息】相关文章:

python实现网页链接提取的方法分享

python 随机数生成的代码的详细分析

python 自动提交和抓取网页

python实现文件名批量替换和内容替换

python pdb调试方法分享

python基础教程之字典操作详解

python备份文件以及mysql数据库的脚本代码

Python 文件重命名工具代码

python多线程扫描端口示例

基于Python实现的扫雷游戏实例代码

精品推荐
分类导航