来源:早起Python

作者:陈熹、刘早起

大家好,我是早起。

前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下。

由于涉及文件私密所以具体内容已做脱敏处理。

大概是这样,一个文件夹下有多份会议通知信息(本文以 7 份文件为例)

每一份通知打开格式基本类似,如下所示

现在需要将每份会议文档中的 学习时间、学习内容、学习形式、主持人 四项关键信息提取出来,整理到 Excel 表格中:

在他真实需求中,会议通知四年积累下来有快 1000 份(四年开了这么多次会也是很厉害...),用人力挨个打开文件并录到 Excel 中工作量实在太大。

好家伙,这种重复的无聊工作, 不就是一份非常适合交给 Python 的自动化工作吗?我不允许我的粉丝还不会!

下面我们来看看如何用Python解决这个问题,主要将涉及:

openpyxl 写入 Excel 文件python-docx 读取 Word 文件glob 批量获取文件路径

为了简化上面的需求,本文中需要获取的会议通知文件一共 7 个,分别命名为 会议通知1.docx 会议通知2.docx... 会议通知7.docx,存放在 Notice 文件夹下。输出的目标 Excel 文件命名为 Meeting_temp.xlsx

一、基本逻辑

写代码之前都先明确完整的问题需要分为几个小步骤实现。从需求中我们大概可以将代码分为以下几步:

“获取会议通知 Notice 文件夹下的所有文件;解析每一份 Word 文件,获取需要的四个信息,输出到 Excel 中;保存 Excel 文件”

有了逻辑就有了写代码的思路了。第 1 步可以由 glob 库完成,后面两步就是操作 Word 的 python-docx 库和操作 Excel 的 openpyxl 库的交互协作了。

这两个库我们都有说过,如果你不熟悉,一定要先阅读下面的文章!

python-docx操作Word详解openpyxl操作Excel详解

二、代码实现

首先导入需要的库:

将模板 Excel 读取进程序:

写任何批处理的代码之前都建议先写一下单次操作的代码,因此我们先完成对 会议通知 1.docx 文件的解析,确保无误。现在对于文档的结构和关键信息的位置尚不明确,可以先将 Word 以段落 Paragraph 为单位输出观察:

文件的文字排布脉络比较清晰,基本是一句话对应一个段落,而需要的信息可以简单通过判断每句话(每段话)前几个字而明确:

对于学习内容的获取比较特殊,不像其他三个信息,都在一句话中,且关键字就为前几个字:

可以看到,“学习内容” 四个字和真正包含的内容分散在不同的句子中. 这里简单用一个策略:

建立一个空列表存放,然后遍历每一段判断,如果一个字符为数字且第二个字符为中文顿号 “、” 就获取存放到列表中。最后把列表中的元素重新组合成一个长字符串即可:

完成了解析 Word 文件之后,就需要把内容输出的 Excel 文件中了。

简单来说,就是将上面代码获取到的几个元素组合成一个列表,通过 sheet.append(list) 的方法写入 Excel 文件中:

单个文件解析完,用 glob 改完获取文件夹下全部文件,建立循环逐个解析就能完成本需求,当然最后记得保存 Excel 文件。

完整代码如下

核心也不过三十行代码,总共不过三秒就搞定了!

每一份通知打开格式基本类似,如下所示

现在需要将每份会议文档中的 学习时间、学习内容、学习形式、主持人 四项关键信息提取出来,整理到 Excel 表格中:

在他真实需求中,会议通知四年积累下来有快 1000 份(四年开了这么多次会也是很厉害...),用人力挨个打开文件并录到 Excel 中工作量实在太大。

好家伙,这种重复的无聊工作, 不就是一份非常适合交给 Python 的自动化工作吗?我不允许我的粉丝还不会!

下面我们来看看如何用Python解决这个问题,主要将涉及:

openpyxl 写入 Excel 文件python-docx 读取 Word 文件glob 批量获取文件路径

为了简化上面的需求,本文中需要获取的会议通知文件一共 7 个,分别命名为 会议通知1.docx 会议通知2.docx... 会议通知7.docx,存放在 Notice 文件夹下。输出的目标 Excel 文件命名为 Meeting_temp.xlsx

一、基本逻辑

写代码之前都先明确完整的问题需要分为几个小步骤实现。从需求中我们大概可以将代码分为以下几步:

“获取会议通知 Notice 文件夹下的所有文件;解析每一份 Word 文件,获取需要的四个信息,输出到 Excel 中;保存 Excel 文件”

有了逻辑就有了写代码的思路了。第 1 步可以由 glob 库完成,后面两步就是操作 Word 的 python-docx 库和操作 Excel 的 openpyxl 库的交互协作了。

这两个库我们都有说过,如果你不熟悉,一定要先阅读下面的文章!

python-docx操作Word详解openpyxl操作Excel详解

二、代码实现

首先导入需要的库:

将模板 Excel 读取进程序:

写任何批处理的代码之前都建议先写一下单次操作的代码,因此我们先完成对 会议通知 1.docx 文件的解析,确保无误。现在对于文档的结构和关键信息的位置尚不明确,可以先将 Word 以段落 Paragraph 为单位输出观察:

文件的文字排布脉络比较清晰,基本是一句话对应一个段落,而需要的信息可以简单通过判断每句话(每段话)前几个字而明确:

对于学习内容的获取比较特殊,不像其他三个信息,都在一句话中,且关键字就为前几个字:

可以看到,“学习内容” 四个字和真正包含的内容分散在不同的句子中. 这里简单用一个策略:

建立一个空列表存放,然后遍历每一段判断,如果一个字符为数字且第二个字符为中文顿号 “、” 就获取存放到列表中。最后把列表中的元素重新组合成一个长字符串即可:

完成了解析 Word 文件之后,就需要把内容输出的 Excel 文件中了。

简单来说,就是将上面代码获取到的几个元素组合成一个列表,通过 sheet.append(list) 的方法写入 Excel 文件中:

单个文件解析完,用 glob 改完获取文件夹下全部文件,建立循环逐个解析就能完成本需求,当然最后记得保存 Excel 文件。

完整代码如下

核心也不过三十行代码,总共不过三秒就搞定了!

python底层原理 知乎_用Python写代码,一分钟搞定一天工作量,同事直呼:好家伙...相关推荐

  1. Python仅用3行代码就能输出花式字符串图集,同事直呼666!

    Python用3行代码输出花式字符串图集,同事直呼666! 高逼格的日志 springboot 相信Java程序员看到上面的图,一定不会陌生.没错,springboot的启动日志.不知道其他人怎么想, ...

  2. python入门神器 知乎_如何处理 Python 入门难以进步的现象?

    我去年十月份利用工作空闲时间开始自学Python,今年四月份找到一个Python工程师的工作,你的困惑我也有过,相信很多自学的人都有这个困惑,我现在也会有这个困惑.最重要,最重要,最重要的是:去工作, ...

  3. python循环输出花式图案锁屏教程_Python仅用3行代码就能输出花式字符串图集,同事直呼666!...

    高逼格的日志 相信Java程序员看到上面的图,一定不会陌生.没错,springboot的启动日志.不知道其他人怎么想,我第一次看到这个启动日志的时候,就觉得好炫酷.然而,大家在日常的Python开发中 ...

  4. 区区几行Python代码,一分钟搞定一天工作量

    作者 | 陈熹.刘早起 来源 | 早起Python 大家好,我是早起. 前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下. 由于涉及 ...

  5. 自学python能干什么知乎_自学python能干什么

    自学python能干什么? 1,比如可以做web应用开发 在国内,豆瓣一开始就使用Python作为web开发基础语言,知乎的整个架构也是基于Python语言,这使得web开发这块在国内发展的很不错. ...

  6. 自学python能干什么知乎_自学Python迷茫了怎么办?

    起步阶段 任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识. 1.硬知识 "硬知识"指的是编程语言的语法.算法和数据结构.编程范式等,例如:变量和类型 ...

  7. python通信原理实验报告_【Python之旅】第五篇(一):Python Socket通信原理-阿里云开发者社区...

    只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理. 1.Socket socket也称作"套接字",用于描述IP地 ...

  8. python真的可以减少工作强度_用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!...

    前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下.由于涉及文件私密所以具体内容已做脱敏处理. 大概是这样,一个文件夹下有多份会议通知 ...

  9. python爬朋友圈数据_第2天|10天搞定Python网络爬虫,爬段子,发朋友圈

    刚刚在朋友圈发了我在糗事百科上爬取的段子,获得了好几十个赞,嘎嘎,给你看一下:"创作一定要保持大脑刺激,才能写出不同的灵魂之光.老婆很赞同,为了让我写出好贴,给我带回来了锥子,锤子,还有龙息 ...

最新文章

  1. gz文件解压命令 linux_linux常用命令和文件上传(FZ)、解压、配置环境变量(JDK)
  2. php 自动加载函数,PHP自动加载的实例详解
  3. linux g命令,【Linux】常用命令大全
  4. 文远知行2020年校招 | 领航者计划
  5. 后台代码之买票和查找核实航班的代码
  6. flask nginx+uwsgi超时设置
  7. Java中的Http连接
  8. 遇到一个诡异的regedit.exe程序问题
  9. 最新电脑cpu性能排行服务器,服务器cpu性能如何 服务器cpu性能排行榜介绍【详解】...
  10. 5G承载网络架构和技术方案白皮书(部分摘录-1)
  11. Spring Security Encoded password does not look like BCrypt
  12. YOLOV5:不懂代码也能使用YOLOV5跑项目
  13. 008产品设计的思考(创造思维+用户体验+用户画像+用户群体)
  14. Qiyuan-接小球游戏3.0
  15. NPOI导出Excel自动计算公式问题
  16. 最新Quarters II 13.1 下载安装全教程 + ModelSim联调(2022/12/11 )
  17. 用Potplayer听音乐时,声音忽大忽小问题
  18. layui实现文件压缩上传_基于SSM框架、Layui的多文件上传、包括图片,压缩包,音频等文件(与数据库挂钩) - 爱秧博客...
  19. Windows环境下搭建nexus私服
  20. 小程序微信小程序设计注册页面

热门文章

  1. 瑞吉外卖 —— 4、菜品分类管理
  2. 互联网行业-镭速文件传输系统方案
  3. 攻防靶场|Vulnstack2靶场之CS实战
  4. 网络游戏之性能测试规划(二)——如何建立有效的基准数据及环境(拟稿)...
  5. 怎么发送电子邮件营销?关键在于这4点!
  6. 【附源码】计算机毕业设计JAVA高考志愿智能辅助填报系统
  7. python三剑客电子版_python编程操作office三剑客之word篇
  8. 数据库查询的实现:B树与磁盘I/O算法设计
  9. 打开X盘,显示“驱动器X中的磁盘未被格式化。想现在格式化吗
  10. 作文成功之路杂志作文成功之路杂志社作文成功之路编辑部2023年第3期目录