当前位置: 首页 > news >正文

教育培训类网站设计网页设计

教育培训类网站设计,网页设计,如何用vs2012做网站,wordpress study怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel) 本代码偏向处理高校教务处的工作 休学或请假模板如下: 休学证明(此联存教务办)编号:休202323 计算机系23级计算机科学与技术…

怎么从休学证明中取出休学原因(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
http://www.yidumall.com/news/94997.html

相关文章:

  • 只做彩票网站犯法吗淘宝seo是什么意思
  • java怎么做网站国内重大新闻十条
  • 武汉做手机网站淘宝热搜关键词排行榜
  • 东莞做网站的联系电长沙h5网站建设
  • 武汉做网站训建设网站的十个步骤
  • 宋祖儿在哪个网站做网红搜索引擎优化方法与技巧
  • 武汉网站建设哪家最好线下推广有哪些渠道
  • 设计网站无锡阿里云自助建站
  • 做淘宝客网站详细步骤目前最牛的二级分销模式
  • ag娱乐建设网站关键词优化的主要工具
  • 做django后台网站seo搜索引擎营销工具
  • 龙华网站建设设计网站建设方案书
  • 排名优化seo公司广州seo招聘网
  • 百度做的网站 后台管理怎么进入广州做seo整站优化公司
  • 苹果浏览器怎么信任网站设置代发百度首页排名
  • 网站备案 法人变更电脑速成班短期电脑培训班
  • 专做进口批发的网站如何进行app推广
  • 如何建设网站知乎世界杯数据分析
  • 做网站第一合肥seo快排扣费
  • 通州顺德网站建设百度广告收费表
  • b2b平台推广计划seo排名外包
  • 广告设计店名大全广州推广优化
  • 辛集做网站公司天津seo招聘
  • 阿里巴巴网站开发信在哪电商培训机构哪家好
  • 广东大唐建设网站淘宝seo优化
  • 如何弄自己的公司网站泉州seo托管
  • 网站建设多少钱一年对网站的建议和优化
  • 安徽省建设部网站友情链接管理系统
  • seo推广培训课程内蒙古网站seo
  • 无极招聘网无极在线关键词优化营销