本文实例讲述了python读取word文档的方法。分享给大家供大家参考。具体如下:
首先下载安装win32com
1
2
3
4
5
6
|
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方式读取,应当写成
1
|
doc.SaveAs( 'c:/test' , 4 ) |
注意:系统执行完成后,会自动产生文件后缀txt(虽然没有指明后缀)。
在xp系统下面,应当,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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.
1
2
3
4
5
|
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() |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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程序设计有所帮助。