如何用Python批量计算Word中的算式

一、问题的提出

到了期末,大家都在忙着写总结、改试卷、算工作量,写总结可以借助于ChatGPT,改试卷可以用星火的自动批阅功能,算工作量就是一项比较棘手的问题,因为它涉及很多算式,有时需要老师用计算器算来算去,因为里面有括号的问题,所以手工算起来非常麻烦。历经十多年的算工作量,我摸索出了一套方法今天与大家分享一下,也算是为大家减轻一下负担,提升工作效率,把工作量算的又快又准。

工作量样例

以上是一张工作量的样图,我们的目标是,把教学工作计算式一列算出来,并填写在标准学时一栏里面。

二、问题的解决

1.搜索引擎法

这种方法很简单,就是把教学工作算式那里的内容复制一下,放到bing搜索框里面,然后回车就可以自动计算出算式的数值,如下图所示。不过,你还需要把这个数值进行四舍五入填写到标准学时那里。这样,有几项任务就要搜索几次,虽然次数比较多,但是上手比较容易,而且不用修改任何算式的内容。

搜索引擎计算

Bing搜索对算式中的符号没有过于严格的要求,如果你想使用百度来计算就要把里面的乘号改为【*】号,中括号改为小括号【()】,这样就可以搜出算式的答案了。如下图所示:

用百度来计算算式

需要注意的是,算式中的符号需要在英文的半角状态下进行,否则就可能报错。

2.Excel表法

多年了,我们已经习惯用Word来计算工作量,原因很简单,就是Word制作表格似乎更方便,也容易调整格式,说白了没有什么技术含量,但是在Word中应用公式,打序号相对比较麻烦,如果模式是Excel表的话,那计算就相对简单一点儿了,为此,我特地把Word表格转化成了Excel表格。为了保证Word表格的格式不改变,我们可以用以下方法,先把Word文件存为htm格式的网页文件,再用Excel打开这个文件,格式就不会变了。可以参考以下方法源自网络[1]。

使用另存为功能:
1. 在Word中打开文档,点击“文件”菜单,选择“另存为”。
2. 在弹出的“另存为”窗口中,选择保存类型为“网页(*.htm; *.html)”,然后点击“保存”。
3. 打开Excel,点击“文件”菜单,选择“打开”。
4. 在“打开”窗口中,找到保存的HTML文件并打开。此时,文档的排版将完整地被导入到Excel中。

Word表格转化为Excel表

采用这种方法,可以充分发挥Excel的计算功能,在标准学时下面的单元格中应用函数:

=round(evaluate(J5),2)

就可以直接把算式计算出来,并且保留小数点后面二位数字,然后向下拖动鼠标,计算所有算式,最后用【Alt+=】求和。但是缺点也很明显,就是要进行格式转化,另外算式中的乘号也要换成星号,方括号也要变成小括号,如果Excel操作不熟练的话,建议还是使用第一种方法来解决。

3.Python代码实现

第一种方法一次只能算一个算式,第二种方法可以算好一个算式后,向下拖动实现全部算式的计算,那用Python可以一次性算完所有的算式,并且自动求和【功能后续添加】。即使算式中有乘号、中括号也可以通过编程的方法进行批量替换。以下代码由我个人与ChatGPT共同完成,实现过程包括,读取docx文件,获取指定列内容,筛选出包含数字的算式,格式化算式后对算式进行计算,并保留小数点2位。

from docx import Documentdef has_digits(s):return any(char.isdigit() for char in s)def replace_operators(expression):# 定义映射符号intab = "×[]"outtab = "*()"# 生成映射表transtab = str.maketrans(intab, outtab)# 批量的字符替换,对算式进行格式化expression = expression.translate(transtab)return expressiondef process_table(table):# 循环每一行for row in table.rows:# 获取J列的值(假设J列对应的是索引11)j_cell = row.cells[11].text# 替换不规则的乘号和中括号j_cell = replace_operators(j_cell)# 只取有数字的单元格的内容if has_digits(j_cell):try:# 计算结果并保留2位小数result = round(eval(j_cell), 2)# 将结果写入K列(假设K列对应的是索引12)row.cells[12].text = str(result)except Exception as e:print(f"Error processing expression in row {e}")def process_word_document(file_path):document = Document(file_path)for table in document.tables:process_table(table)# 保存文档document.save(file_path)# 用法示例
word_file_path = '如何用word统计工作量.docx'
process_word_document(word_file_path)

Python代码的优点是运算快,可以同时处理多个文件,不用担心算式不统一,小数点没有保留2位等问题。

三、学后反思

  1. 上面是生活中应用搜索引擎、Excel和Python的一个小案例,可以看出,对于算式的计算方法多样,大家可以选择适合自己的方法,如果算式不多,搜索引擎法简单实用,如果想一劳永逸就转换为Excel表来计算工作量,简单实用。如果是想批量处理文件就用Python,几十个人的工作量估计10秒左右就算完了。
  2. 上面的代码经测试可用,但是还有一项汇总的内容,后续我还要加上去,这样计算算式、保留2位小数、汇总数据,一气呵成,鼠标一点就完成了批量任务。

参考

  1. ^如何把Word表格转化为Excel不变格式 百度安全验证icon-default.png?t=N7T8https://baijiahao.baidu.com/s?id=1779913471459003540&wfr=spider&for=pc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2659345.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

判断电话号码是否重复-excel

有时候重复的数据不需要或者很烦人,就需要采取措施,希望以下的方法能帮到你。 1.判断是否重复 方法一: 1)针对第一个单元格输入等号,以及公式countif(查找记录数的范围,需要查找的单元格) 2…

二叉树题目:在二叉树中分配硬币

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:在二叉树中分配硬币 出处:979. 在二叉树中分配硬币 难度 6 级 题目描述 要求 给定一个有 n \texttt{n} n 个结点的二叉树的根结点 r…

删除数据后, redis 内存占用还是很高怎么办?

现象: reids 做了数据删除,数据量不大,使用 top 命令看,发现还是占用大量内存 原因: 1.redis 底层内存根据内存分配器分配,不会立刻释放 2.redis 释放的内存空间不是连续的,存在碎片 内存碎…

【Vulnhub 靶场】【Hms?: 1】【简单】【20210728】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/hms-1,728/ 靶场下载:https://download.vulnhub.com/hms/niveK.ova 靶场难度:简单 发布日期:2021年07月28日 文件大小:2.9 GB 靶场作者:niveK 靶场系…

基于ssm的学生就业管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生就业管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

大数据Doris(四十二):使用物化视图

文章目录 使用物化视图 一、​​​​​​​创建物化视图

JSoup 爬虫遇到的 404 错误解决方案

在网络爬虫开发中,使用JSoup进行数据抓取是一种常见的方式。然而,当我们尝试使用JSoup来爬虫抓取腾讯新闻网站时,可能会遇到404错误。这种情况可能是由于网站的反面爬虫机制检测到了我们的爬虫行为,从而拒绝了我们的请求。 假设我…

深入探索MongoDB集群模式:从高可用复制集

MongoDB复制集概述 MongoDB复制集主要用于实现服务的高可用性,与Redis中的哨兵模式相似。它的核心作用是数据的备份和故障转移。 复制集的主要功能 数据复制:数据写入主节点(Primary)时,自动复制到一个或多个副本节…

科荣AIO UtilServlet存在任意文件读取漏洞

文章目录 产品简介漏洞概述指纹识别漏洞利用修复建议 产品简介 科荣AIO是一款企业管理软件,提供企业一体化管理解决方案。它整合了ERP(如进销存、财务管理)、OA(办公自动化)、CRM(客户关系管理&#xff09…

Solidworks中子装配不能再总装配中转动

问题: 今天在Solidworks中装配零部件的时候发现,子装配体中能实现的相对转动关系,在总装配体中无法做到。 解决方案: 上网查询,发现解决方案是: 在总装配体导航栏中,在子装配体处点击右键&am…

使用 Postman 实现 API 自动化测试

背景介绍 相信大部分开发人员和测试人员对 postman 都十分熟悉,对于开发人员和测试人员而言,使用 postman 来编写和保存测试用例会是一种比较方便和熟悉的方式。但 postman 本身是一个图形化软件,相对较难或较麻烦(如使用 RPA&am…

新建虚拟环境并与Jupyter内核连接

第一步:在cmd里新建虚拟环境,shap38是新建的虚拟环境的名字 ,python=3.x conda create -n shap38 python=3.8第二步,安装ipykernel,打开anconda powershell prompt: 虚拟环境的文件夹位置,我的如图所示: 进入文件夹并复制地址: 输入复制的文件夹地址更改文件夹:…

Spring实战系列(三)了解容器的基本实现

我们可以通过GitHub或者码云下载spring-framework源码,这边是基于5.X版本进行下载学习的。 地址:https://github.com/spring-projects/spring-framework 分析Spring源码是非常一件的难的事情,只能一步步学习,一步步记录。 前面在…

【负载均衡oj】(四) 运行模块

一.目的 主要负责运行可执行程序。通过文件名就能运行程序。 二.runner run运行模块: 不需要关心运行结果是否正确,只具备基本运行功能并只关心是否运行出错。 一个程序的时候,有三种IO需要关心,标准错误,标准输出&#xff0c…

文献速递:人工智能医学影像分割---一个用于 COVID-19 CT 图像的粗细分割网络

01 文献速递介绍 如今,根据国家癌症研究所的报告,美国约有9.9%的男性患有前列腺癌。1 此外,根据美国癌症协会的数据,预计2019年将有174,650个新病例被诊断出前列腺癌,与此同时大约有31,620名男性将死于前列腺癌。因此…

百度CTO王海峰:文心一言用户规模破1亿

▶ 写在前面▶ 飞桨开发者已达1070万▶ 文心一言用户规模破亿,日提问量快速增长 ▶ 写在前面 “文心一言用户规模突破 1 亿。”12 月 28日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰在第十届 WAVE SUMMIT 深度学习开发者大会上宣布…

AtCoder Beginner Contest 334

B - Christmas Trees 分析&#xff1a; 讨论三种情况 1&#xff09; l<a<r 2&#xff09;a<l 3&#xff09;a>r 虽然简单&#xff0c;但是坑还是有一些的 例如2的策略是&#xff0c;[a,r]的树 - [a,l]的树&#xff0c;然后要注意 l 点有没有树&#xff0c;如…

要学习openfoam,c++需要掌握到什么程度?

要学习openfoam&#xff0c;c需要掌握到什么程度&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「c的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&…

2023年12月27日学习记录_加入噪声

目录 1、今日计划学习内容2、今日学习内容1、add noise to audio clipssignal to noise ratio(SNR)加入 additive white gaussian noise(AWGN)加入 real world noises 2、使用kaggel上的一个小demo&#xff1a;CNN模型运行时出现的问题调整采样率时出现bug 3、明确90dB下能否声…

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

作者&#xff1a;黄晓萌(学仁) 背景 Job 表示短周期的作业&#xff0c;定时 Job 表示按照预定的时间运行Job&#xff0c;或者按照某一频率周期性的运行 Job。比如&#xff1a; 许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案&#xff0c;该方案非常简单&#xff…