玖叶教程网

前端编程开发入门

如何从pptx中拿到文本?手把手教你批量输出文本

生成示例文件

编写核心代码

扩展功能,强化工具

学习python-pptx也有几天了,实在忍不住想要做个实例了,于是今天做了一个用利python-pptx来从pptx中提取所有文本的功能(不包含表格中的文本),具体有以下功能(软件的设计过程已录制好视频并发布在平台,大家可以关注我后在主页看到,也可以直接点击上面的链接看到):

1、从指定的文件夹中,对所有pptx(注意不是ppt,因为两者文档格式不同)进行文本提取。

2、提取出来的文本,以pptx的文件名加txt作为后缀进行保存,保存位置为程序中设定的targetPath,如果该目录不存在的话,则会先创建一个。


# coding=gbk
import os
import re
from pptx import Presentation

class ExtractPPTXText():

    def __init__(self,params):
        self.errFlag = False
        self.msg = ""
        self.sourcePath = params["sourcePath"]
        if not os.path.exists(self.sourcePath):
            self.errFlag = True
            self.msg = "源文件夹不存在!"
        self.targetPath = params["targetPath"]
        if not os.path.exists(self.targetPath):
            os.makedirs(self.targetPath)
        self.run()

    def run(self):
        if self.errFlag:
            print(self.msg)
            return
        for file in os.listdir(self.sourcePath):
            if not file[-4:] == "pptx":
                continue
            if re.findall("^~",file):
                continue
            # 将文件传入getText,并返回文本列表
            para_list = self.getText(os.path.join(self.sourcePath,file))
            # 提取文件名与扩展名
            fileName,expandName = os.path.splitext(file)
            # 组成新的文件名
            newFileName = os.path.join(self.targetPath,fileName + ".txt")
            # 将文本列表保存到txt文件
            self.saveText(para_list,newFileName)

    # 从pptx中返回文本列表
    def getText(self,file):
        para_list = []
        prs = Presentation("test.pptx")
        for slide in prs.slides:
            for shape in slide.shapes:
                for para in shape.text_frame.paragraphs:
                    if len(para.text.strip()) == 0:
                        continue
                    else:
                        para_list.append(para.text.strip())
        return para_list

    # 保存文本
    def saveText(self,para_list,file):
        with open(file,"w",encoding="gbk") as txt_file:
            txt_file.write("\n".join(para_list))
        print("{} 保存完成!".format(file))

    def __str__(self):
        return self.msg

if __name__ == '__main__':
    params = {
        "sourcePath":r"K:\伍德春原创视频\自动化\2020-11-10",    # 要进行提取的pptx的所在目录
        "targetPath":r"K:\伍德春原创视频\自动化\2020-11-10\txt",    # 提取后的txt文件要保存到的目录
    }
    newobj = ExtractPPTXText(params)

头条号中可以插入代码块这功能很好,可以较好的展现代码,点赞。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言