python逻辑量有_用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!...

本文主要是介绍python逻辑量有_用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,我是早起。

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

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

format,png

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

format,png

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

format,png

在他真实需求中,会议通知四年积累下来有快 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 库的交互协作了。

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

代码实现

首先导入需要的库:from docx import Document

from openpyxl import load_workbook

import glob

将模板 Excel 读取进程序:path  = r'C:\Users\xxx' # 路径为会议通知文件夹和 Excel 模板所在的位置,可按实际情况更改

workbook = load_workbook(path + r'\Meeting_temp.xlsx')

sheet = workbook.active

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

for paragraph in wordfile.paragraphs:

    print(paragraph)format,png

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

if paragraph.text[0:5] == '学习时间:':

study_time = paragraph.text[5:]

if paragraph.text[0:4] == '主持人:':

host = paragraph.text[4:]

if paragraph.text[0:5] == '学习形式:':

study_type = paragraph.text[5:]

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

format,png

可以看到,“学习内容” 四个字和真正包含的内容分散在不同的句子中.

这里简单用一个策略:“

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

for paragraph in wordfile.paragraphs:

if paragraph.text[0:5] == '学习时间:':

study_time = paragraph.text[5:]

if paragraph.text[0:4] == '主持人:':

host = paragraph.text[4:]

if paragraph.text[0:5] == '学习形式:':

study_type = paragraph.text[5:]

if len(paragraph.text) >= 2:

if paragraph.text[0].isdigit() and paragraph.text[1] == '、':

content_lst.append(paragraph.text)

content = ' '.join(content_lst)

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

简单来说,就是将上面代码获取到的几个元素组合成一个列表,通过 sheet.append(list) 的方法写入 Excel 文件中:number = 0 # 全局中设置一个变量用于计数,做为序号输出

wordfile = Document(path + r'\Notice\会议通知 1.docx')

content_lst = []

for paragraph in wordfile.paragraphs:

if paragraph.text[0:5] == '学习时间:':

study_time = paragraph.text[5:]

if paragraph.text[0:4] == '主持人:':

host = paragraph.text[4:]

if paragraph.text[0:5] == '学习形式:':

study_type = paragraph.text[5:]

if len(paragraph.text) >= 2:

if paragraph.text[0].isdigit() and paragraph.text[1] == '、':

content_lst.append(paragraph.text)

content = ' '.join(content_lst)

number += 1

sheet.append([number, study_time, content, study_type, host])

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

完整代码如下👇from docx import Document

from openpyxl import load_workbook

import glob

path  = r'C:\Users\xxx'

workbook = load_workbook(path + r'\Meeting_temp.xlsx')

sheet = workbook.active

number = 0

for file in glob.glob(path + r'\Notice\*.docx'):

wordfile = Document(file)

content_lst = []

for paragraph in wordfile.paragraphs:

if paragraph.text[0:5] == '学习时间:':

study_time = paragraph.text[5:]

if paragraph.text[0:4] == '主持人:':

host = paragraph.text[4:]

if paragraph.text[0:5] == '学习形式:':

study_type = paragraph.text[5:]

if len(paragraph.text) >= 2:

if paragraph.text[0].isdigit() and paragraph.text[1] == '、':

content_lst.append(paragraph.text)

content = ' '.join(content_lst)

number += 1

sheet.append([number, study_time, content, study_type, host])

workbook.save(path + r'\Meeting_notice.xlsx')

format,png

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

如果你也想试试,可以在「早起Python」后台回复0118获取数据,并尝试用文中的代码实现。

本文的分享就到这里,如果喜欢本文的话,希望可以点赞、转发、在看支持早起,我们会在后续的办公自动化系列文章中分享更多实用的案例!-END-

format,png

文末给大家推荐一下狗熊会的深度学习笔记(作为一本以“笔记”命名的深度学习图书,主要定位是面向广大希望入门深度学习的初学者。本书以深度神经网络(DNN)、卷积神经网络(CNN)和循环神经网络(RNN)为核心,详细介绍了深度学习的理论基础、通用方法和三大网络的原理与实践。全书代码以Keras框架作为范例,对于初学者而言简单易懂),点击下方商品可以查看详情与购买!

这篇关于python逻辑量有_用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355271

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结