1、基础准备:
运行环境:win10系统、python3.7
插件:pywin32
2、world转text算法实现
算法思路:
(1)定义文件路径和转存路径:使用split切分
(2)修改新的文件名
(3)设置完整的保存路径:使用join
(4)启动应用程序进行格式转换
(5)保存文本
image.png
结构如下图所示:首先读取要提取的word文件路径,截取文件路径和文件名称,通过文件名称后缀判断是否是world文件,若是,修改文件名后缀,与前面的文件路径合并形成新的文件保存路径,然后进行文本提取,最后将提取的内容保存到新的路径下并保存。
3、工程目录如下
image.png4、代码实现
# coding=utf-8
import fnmatch
import os
from win32com import client as wc
'''
功能描述:world文件转存txt
参数描述:1、file_path文件路径;2、save_path:保存路径
'''
class WorldToText(object):
def world_to_text(self, file_path, save_path=""):
# 1、切分文件路径为文件目录和文件名
dirs, file_name = os.path.split(file_path)
# print(dirs, '\n', file_name)
# 2、修改切分后的文件后缀
new_name = ""
if fnmatch.fnmatch(file_name,"*.doc"):
new_name = file_name[:-4] + ".txt"
elif fnmatch.fnmatch(file_name,"*.docx"):
new_name = file_name[:-5] + ".txt"
else:
print("格式不正确,仅支持doc or docx 格式")
return
# 3、设置新的文件保存路径
if save_path == "":
save_path = dirs
else:
save_path = save_path
world2txtPath = os.path.join(save_path, new_name)
print(world2txtPath)
# 4、加载文本提取的处理程序,world---txt
# pythoncom.CoInitialize()
world_app = wc.Dispatch("Word.Application")
mytxt = world_app.Documents.Open(file_path)
# 5、保存文本信息
mytxt.SaveAs(world2txtPath, 4)#参数4代表抽取文本
if __name__ == '__main__':
world_text = WorldToText()
file_path = os.path.abspath(r'../extractWorld/测试文本.docx')
world_text.world_to_text(file_path)
成功运行后,工程目录为:
image.png
注:此方法同样适用于提取pdf
5、抽取文本小工具
# coding=utf-8
import fnmatch
import os
from win32com import client as wc
'''
Description:多格式文档文本抽取工具
功能描述:文件转存txt
参数描述:1、file_path文件路径;2、save_path:保存路径
'''
class TextTool(object):
def FileToText(self,file_path, save_path=""):
# 1、切分文件路径为文件目录和文件名
dirs, file_name = os.path.split(file_path)
# print(dirs, '\n', file_name)
# 2、修改切分后的文件后缀
type_name = os.path.splitext(file_name)[-1].lower()
new_name = self.TranType(file_name, type_name)
# 3、设置新的文件保存路径
if save_path == "":
save_path = dirs
else:
save_path = save_path
new2txtPath = os.path.join(save_path, new_name)
print(new2txtPath)
# 4、加载文本提取的处理程序,world---txt
# pythoncom.CoInitialize()
world_app = wc.Dispatch("Word.Application")
mytxt = world_app.Documents.Open(file_path)
# 5、保存文本信息
mytxt.SaveAs(new2txtPath, 4) # 参数4代表抽取文本
mytxt.Close()
def TranType(self,file_name, type_name):
new_name = ""
if type_name == ".pdf":
if fnmatch.fnmatch(file_name, "*.pdf"):
new_name = file_name[:-4] + ".txt"
else:
return
elif type_name == ".doc" or type_name == '.docx':
if fnmatch.fnmatch(file_name, "*.doc"):
new_name = file_name[:-4] + ".txt"
elif fnmatch.fnmatch(file_name, "*.docx"):
new_name = file_name[:-5] + ".txt"
else:
return
else:
print("警告:\n 您输入【',type_name,'】的数据不合法,本抽取工具仅支持doc/docx/pdf格式")
return new_name
if __name__ == '__main__':
file_path = os.path.abspath(r'../extractWorld/测试文本.docx')
texttool = TextTool()
texttool.FileToText(file_path)
网友评论