当前位置:Gxlcms > Python > python读取word文档的方法

python读取word文档的方法

时间:2021-07-01 10:21:17 帮助过:53人阅读

本文实例讲述了python读取word文档的方法。分享给大家供大家参考。具体如下:

首先下载安装win32com

  1. from win32com import client as wc
  2. word = wc.Dispatch('Word.Application')
  3. doc = word.Documents.Open('c:/test')
  4. doc.SaveAs('c:/test.text', 2)
  5. doc.Close()
  6. word.Quit()

这种方式产生的text文档,不能用python用普通的r方式读取,为了让python可以用r方式读取,应当写成

  1. doc.SaveAs('c:/test', 4)

注意:系统执行完成后,会自动产生文件后缀txt(虽然没有指明后缀)。
在xp系统下面,应当,

  1. open(r'c:\text','r')
  2. wdFormatDocument = 0
  3. wdFormatDocument97 = 0
  4. wdFormatDocumentDefault = 16
  5. wdFormatDOSText = 4
  6. wdFormatDOSTextLineBreaks = 5
  7. wdFormatEncodedText = 7
  8. wdFormatFilteredHTML = 10
  9. wdFormatFlatXML = 19
  10. wdFormatFlatXMLMacroEnabled = 20
  11. wdFormatFlatXMLTemplate = 21
  12. wdFormatFlatXMLTemplateMacroEnabled = 22
  13. wdFormatHTML = 8
  14. wdFormatPDF = 17
  15. wdFormatRTF = 6
  16. wdFormatTemplate = 1
  17. wdFormatTemplate97 = 1
  18. wdFormatText = 2
  19. wdFormatTextLineBreaks = 3
  20. wdFormatUnicodeText = 7
  21. wdFormatWebArchive = 9
  22. wdFormatXML = 11
  23. wdFormatXMLDocument = 12
  24. wdFormatXMLDocumentMacroEnabled = 13
  25. wdFormatXMLTemplate = 14
  26. wdFormatXMLTemplateMacroEnabled = 15
  27. wdFormatXPS = 18

照着字面意思应该能对应到相应的文件格式,如果你是office 2003可能支持不了这么多格式。word文件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字 8、10),区别是如果是wdFormatHTML格式的话,word文件里面的公式等ole对象将会存储成wmf格式,而选用 wdFormatFilteredHTML的话公式图片将存储为gif格式,而且目测可以看出用wdFormatFilteredHTML生成的HTML 明显比wdFormatHTML要干净许多。

当然你也可以用任意一种语言通过com来调用office API,比如PHP.

  1. from win32com import client as wc
  2. word = wc.Dispatch('Word.Application')
  3. doc = word.Documents.Open(r'c:/test1.doc')
  4. doc.SaveAs('c:/test1.text', 4)
  5. doc.Close()

  1. import re
  2. strings=open(r'c:\test1.text','r').read()
  3. result=re.findall('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)',strings)
  4. chan=re.sub('\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)|\(\s*[A-D]\s*\)|\(\xa1*[A-D]\xa1*\)','()',strings)
  5. question=open(r'c:\question','a+')
  6. question.write(chan)
  7. question.close()
  8. answer=open(r'c:\answeronly','a+')
  9. for i,a in enumerate(result):
  10. m=re.search('[A-D]',a)
  11. answer.write(str(i+1)+' '+m.group()+'\n')
  12. answer.close()
  13. chan=re.sub(r'\xa3\xa8\s*[A-D]\s*\xa3\xa9','()',strings)
  14. #不要(),容易引起歧义。

希望本文所述对大家的Python程序设计有所帮助。

人气教程排行