国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python批量提取word內信息

2019-11-25 17:05:51
字體:
來源:轉載
供稿:網友
單位收集了很多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, situation, people,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) #不要(),容易引起歧義。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰都县| 乳山市| 刚察县| 白沙| 都安| 伊川县| 涞源县| 乌苏市| 永定县| 辰溪县| 英吉沙县| 顺义区| 高陵县| 陇西县| 灌阳县| 利川市| 启东市| 彰化市| 蒙阴县| 楚雄市| 准格尔旗| 白山市| 南部县| 襄汾县| 海宁市| 赤壁市| 呼和浩特市| 麻江县| 中西区| 大足县| 香格里拉县| 沈丘县| 车险| 金坛市| 公主岭市| 宜昌市| 岳普湖县| 科技| 洛阳市| 会泽县| 荔浦县|