怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel)
怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel)
本代码偏向处理高校教务处的工作
休学或请假模板如下:
休学证明(此联存教务办)编号:休202323
计算机系23级计算机科学与技术本科专业学生5-StarrySky,不男不女,因自身原因,从2023年9月至2027年9
月休学。复学时持复学申请和休学证明及休学期间所在单位开具的无违法乱纪行为证明办理复学手续。复学
后编入2027级同专业就读。若逾期两周不办理复学手续,将做自动退学处理。CSDN大学教务办
2023年11月12日
需求说明:
1.首先从excel中取出需要休学的姓名
2.然后利用得到姓名去word文件进行匹配
3.最后通过观察发现,休学原因,在'因'和','之间,所以我们这样去取我们想要的数据
代码如下:
import re# 从表格文件中提取姓名数据table_data = pd.read_excel("休学名单.xls")# names = table_data["XM"]# 从表格文件中提取姓名数据names = table_data["XM"]# 提取 Word 文档中的文本text = docx2txt.process("休学证明.docx")# 创建一个字典来存储姓名和对应的请假原因name_reason_dict = {}for name in names:found = Falsereason = None# 在提取的文本中搜索姓名if name in text:# 查找姓名出现的最后一次位置name_position = max([m.start() for m in re.finditer(name, text)])# 查找 "因" 和截取到 "," 之前的文本match = re.search(r'因(.*?),', text[name_position:])if match:reason = match.group(1)found = Trueif found:# 使用姓名作为键,保存最后一个匹配到的原因name_reason_dict[name] = reason# 打印姓名和对应的请假原因for name, reason in name_reason_dict.items():print(f"姓名: {name}, 请假原因: {reason}")df = DataFrame(list(name_reason_dict.items()), columns=['XM', 'XXYY'])df.to_excel("休学证明.xlsx")
重要知识点补充
docx2txt:
将docx文件转换为txt格式的模块
能够直接读取docx文档并将其中的文本部分剥离出来的简单工具re.finditer:
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志
* 字符匹配
实例 描述
python 匹配 "python" 参考网址:https://www.runoob.com/python/python-reg-expressions.htmlmax([m.start() for m in re.finditer(name, text)])
这行代码是使用 Python 的正则表达式模块(re)来在文本字符串 text 中查找所有匹配 name 的位置,并返回其中最
大的位置。
具体解释如下:
re.finditer(name, text):这部分使用 re.finditer() 函数来查找在 text 中所有匹配 name 的位置。finditer() 返回一个迭
代器,迭代器的每个元素是一个包含匹配的相关信息的 Match 对象。
[m.start() for m in ...]:这部分是一个列表推导式,它遍历 re.finditer() 返回的 Match 对象列表,对于每个 Match 对
象 m,取其匹配的开始位置 m.start()。
max([...]):最后,max() 函数用来从位置列表中找到最大的位置。match = re.search(r'因(.*?),', text[name_position:])
这行代码使用正则表达式来搜索文本中以指定字符串 "因" 开头并以逗号 "," 结尾的文本段。
具体解释如下:
re.search(pattern, text):这部分使用 re.search() 函数来在文本字符串 text 中搜索与正则表达式 pattern 匹配的部
分。pattern 是正则表达式模式,text 是要搜索的文本。
r'因(.*?),':这是正则表达式模式。它的含义是:
因:匹配字面字符串 "因"。
(.*?):这是一个非贪婪捕获组,它会匹配任意字符(.)零次或多次(*),使匹配最短(非贪婪)。
,:匹配字面字符串 ","。
text[name_position:]:这部分是对 text 字符串的切片操作,从 name_position 位置开始提取子字符串。list(name_reason_dict.items()): 这部分将字典 name_reason_dict 中的键值对转换为一个列表,其中每个元素是一个
元组,元组的第一个元素是姓名 'XM',第二个元素是请假原因 'XXYY'。这个列表看起来像下面这样
[('姓名1', '请假原因1'), ('姓名2', '请假原因2'), ('姓名3', '请假原因3'), ...]
columns=['XM', 'XXYY']: 这是在创建 DataFrame 时指定的列名。DataFrame 的第一列将命名为 'XM',第二列将命
名为 'XXYY',这与字典中的键对应。所以,在 DataFrame 中,第一列将包含姓名,第二列将包含请假原因。match 是一个 Python 正则表达式匹配对象,它包含了与正则表达式匹配的文本的详细信息。
reason = match.group(1):用于从正则表达式匹配中获取文本中的具体部分。在这个特定的情况下,match 对象表
示一个成功的正则表达式匹配,group(1) 用于提取匹配中的第一个捕获组(通常由括号包围的部分)。在你的情况
下,正则表达式是 '因(.*?),',其中 (.*?) 表示一个捕获组,它将匹配 "因" 和 "," 之间的任何文本。
参考链接:https://blog.csdn.net/m0_37360684/article/details/84140403
相关文章:
怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel)
怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel) 本代码偏向处理高校教务处的工作 休学或请假模板如下: 休学证明(此联存教务办)编号:休202323 计算机系23级计算机科学与技术…...

C语言 定义一个函数,并调用,该函数中打印显示直角三角形
#include<stdio.h> void chengfabiao() {for (int i 1; i < 5; i){for (int j 1; j < i; j){printf("*");} printf("\n");} } int main(int argc,const char *argv[]) {chengfabiao();return 0; }...

Doceker-compose——容器群集编排管理工具
目录 Docker-compose 1、Docker-compose 的三大概念 2、YAML文件格式及编写注意事项 1)使用 YAML 时需要注意下面事项 2)ymal文件格式 3)json格式 3、Docker Compose配置常用字段 4、Docker-compose的四种重启策略 5、Docker Compos…...
Redis 与 MySQL 一致性 实现方案
正常情况下的流程是:请求来了,先检查 Redis 有没有数据,有返回;没有便查询 MySQL 然后 放入 Redis。 此时,如果 MySQL 的数据发生了变化,所以需要同步到 Redis 中。 解决方法:MySQL 中的数据更新…...

运维 | 使用 Docker 安装 Jenkins | Jenkins
运维 | 使用 Docker 安装 Jenkins | Jenkins 前言 本期内容主要是为了学习如何通过 Docker 安装Jenkins,仅作为记录与参考,希望对大家有所帮助。 准备工作 系统:CentOS 7.9配置:4c8g 快速安装 下面以 Docker 方式安装 Jenkin…...

linux-磁盘应用
目录 一、磁盘内容简述 1、一些基本概念 2、分区简述 3、常见文件系统 4、linux硬盘文件 二、对linux系统进行分区 1、用fdisk进行分区 2、用parted进行分区 一、磁盘内容简述 1、一些基本概念 - 扇区大小:512Btyes,0.5KB - 磁盘最小存储单位&…...

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建
涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …...
软考高级之系统架构师之软件工程
软件工程 面向对象设计原则 单一职责:设计目的单一的类开闭原则;对扩展开放,对修改关闭里氏替换:子类可以替代父类依赖倒置:要依赖于抽象,而不是实现。要针对接口编程,不要针对实现编程接口隔…...

SpringBoot集成与应用Neo4j
文章目录 前言集成使用定义实体配置定义Repository查询方法方式一:Query方式二:Cypher语法构建器方式三:Example条件构建器方式四:DSL语法 自定义方法自定义接口继承自定义接口实现自定义接口neo4jTemplateNeo4jClient 自定义抽象…...
做人,不一定要风风光光,但一定要堂堂正正。处事,不一定要尽善尽美,但一定要问心无愧。
做人,不一定要风风光光,但一定要堂堂正正。处事,不一定要尽善尽美,但一定要问心无愧。以真诚的心,对待身边的每一个人。以感恩的心,感谢拥有的一切。 未来,不是穷人的天下,也不是富人…...

51单片机实验:数码管动态显示00-99
1、实验要求 利用STC89C52RC单片机开发板实现:使用2位数码管循环显示00-99,每次间隔1s,并且当计数到20时,则蜂鸣器鸣响1次。 2、实验分析 程序实现分析: 1、定义数码管位选引脚(P2.4、P2.5、P2.6、…...

【教3妹学编程-java实战5】结构体字段赋值的几种方式
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 2哥 :3妹,考考你,你知道java结…...
阿里蚂蚁淘宝等多次一面面试面经
一面采用电话面试笔试链接做算法题(可能开视频)的形式 蚂蚁第一次: 自我介绍 技术一般使用开源技术还是自己研发 开源spring cloud等 流水线用来做什么 用户是什么人 应用场景 是toB的对吧 学到的最前沿的技术有哪些 gateway全局权限…...

UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解
目录 0 引言1 全局对象(全局变量)1.1 游戏实例 GameInstance1.1.1 介绍1.1.2 使用 GameInstance 1.2 玩家控制器 PlayerController1.3 游戏世界类 UWorld 🙋♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏&…...

c#使用ExifLib库提取图像的相机型号、光圈、快门、iso、曝光时间、焦距信息等EXIF信息
近期公司组织了书画摄影比赛,本人作为摄影爱好者,平时也会拍些照片,这次比赛当然不能错过。为了提高获奖概率,选了19张图像作为参赛作品。但是,摄影作品要提交图像的光圈、曝光时间等参数。一两张还可以通过电脑自带软…...

C++入门05—指针
1. 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 2. 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名; 示例: …...

Go学习第十六章——Gin文件上传与下载
Go web框架——Gin文件上传与下载 1. 文件上传1.1 入门案例(单文件)1.2 服务端保存文件的几种方式SaveUploadedFileCreateCopy 1.3 读取上传的文件1.4 多文件上传 2. 文件下载2.1 快速入门2.2 前后端模式下的文件下载2.3 中文乱码问题 1. 文件上传 1.1 …...

2.MySQL的调控按钮——启动选项和系统变量
2.MySQL的调控按钮——启动选项和系统变量 1.启动选项和配置文件1.1 在命令行上使用选项1.2 配置文件中使用选项1.2.1 配置文件路径1.2.2 配置文件的内容1.2.3 特定 MySQL 版本的专用选项组1.2.4 配置文件的优先级1.2.5 同一个配置文件中多个组的优先级1.2.6 defaults-file 的使…...

故障诊断模型 | Maltab实现CNN卷积神经网络故障诊断
文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现CNN卷积神经网络故障诊断 模型描述 卷积神经网络(convolutional neural network)是具有局部连接、权重共享等特性的深层前馈神经网络,最早主要是用来处理图像信息。 相比于全…...

qt高精度定时器的使用停止线程应用
##线程停止 //线程停止应用 public: explicit WorkerThread(QObject *parent 0) :QThread(parent), m_bStopped(false){qDebug() << "Worker Thread : " << QThread::currentThreadId();}~WorkerThread(){stop();quit();wait();}void stop() {qDebug()…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...