美文网首页
Python抽取world文档文本内容

Python抽取world文档文本内容

作者: 一笑乘风凉 | 来源:发表于2019-08-15 14:36 被阅读0次

    1、基础准备:

     运行环境:win10系统、python3.7
     插件:pywin32
    

    2、world转text算法实现

    算法思路:
    (1)定义文件路径和转存路径:使用split切分
    (2)修改新的文件名
    (3)设置完整的保存路径:使用join
    (4)启动应用程序进行格式转换
    (5)保存文本
    
    image.png

    结构如下图所示:首先读取要提取的word文件路径,截取文件路径和文件名称,通过文件名称后缀判断是否是world文件,若是,修改文件名后缀,与前面的文件路径合并形成新的文件保存路径,然后进行文本提取,最后将提取的内容保存到新的路径下并保存。

    3、工程目录如下

    image.png

    4、代码实现

    # 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)
    

    相关文章

      网友评论

          本文标题:Python抽取world文档文本内容

          本文链接:https://www.haomeiwen.com/subject/egvwjctx.html