主页 > 游戏开发  > 

PythonCookbook-2.27从微软Word文档中抽取文本

PythonCookbook-2.27从微软Word文档中抽取文本
任务

你想从 Windows 平台下某个目录树中的各个微软 Word 文件中抽取文本,并保存为对应的文本文件。

解决方案

借助 PyWin32 扩展,通过COM 机制,可以利用 Word 来完成转换:

import fnmatch,os,sys,win32com.client wordapp = win32com.client.gencache.EnsureDispatch ("Word.Application") try: for path,dirs,files in os.walk(sys.argv[1]): for filename in files: if not fnmatch.fnmatch(filename,'*.doc'):continue doc = os.path.abspath(os.path,join(path,filename)) print "processing %s" % doc wordapp.Documents.Open(doc) docastxt = doc[:-3]+'txt' wordapp.ActiveDocument.SaveAs(docastxt,FileFormat=win32com.client.constants.wdFormatText) wordapp.ActiveDocument.Close() finally: #确保即使有异常发生word仍能被正常关闭 wordapp.Quit() 讨论

关于 Windows应用程序的一个有趣的地方是,可以通过COM以及Python 提供的PyWin32 扩展,编写一些简单的脚本对这些应用程序进行控制。这个扩展允许你用Python 脚本来完成各种 Windows 下的任务。本节的脚本,从目录树下的所有的 Word文档(即.doc 文件)中抽取文本,并存为对应的.txt文本文件。通过使用 os.walk 函数,并利用 for循环语句,我们无须递归即可遍历树中的所有子目录。通过 fnmatch.fnmatch函数,可以检查文件名以确认它是否符合我们给出的通配符,这里的通配符是“.doc”一旦我们确认了这是一个 Word 文档,我们就用此文件名和 os.path 来得到一个绝对路径,再用 Word 打开它,存为文本文件,然后关闭。

如果没有安装Word,可能需要完全不同的方法来达成目标。一种可能是使用OpenOMice.org,它也可以载入 Word 文档。另一种可能是使用可以读取 Word 文档的程序,比如 Antiword,其网址是 http:// ,winfield.demon.nl/。但这里不准备探讨这两种方式。

标签:

PythonCookbook-2.27从微软Word文档中抽取文本由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“PythonCookbook-2.27从微软Word文档中抽取文本