如何用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://www.mzph.cn/news/581450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作系统极速入门[常用指令](安装jdk,MySQL,nginx),以及在linux对项目进行部署。

linux概述: Linux是一套免费使用和自由传播的操作系统 我们为什么要学,Linux? 主流操作系统: linux系统版本: 内核版: 由linux核心团队开发,维护 免费,开源 负责控制硬件 发行版&…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Row组件 沿水平方向布局容器。 子组件 可以包含子组件。 接口 Row(…

UML——软件需求分析

封面 一.分析: 1.需求描述: 2.需求定义: 3.具体功能: 二.用例图: 1.用例描述: 添加图书 查询图书 借阅图书 归还图书 2. 用例图: 三.类图: 四.顺序图(3个): 添加图书顺序图: 借阅图书顺序图: 删除图书顺序图: 六.状态图(2个): …

机器学习深度学习面试笔记

机器学习&深度学习面试笔记 机器学习Q. 在线性回归中,如果自变量之间存在多重共线性,会导致什么问题?如何检测和处理多重共线性?Q. 什么是岭回归(Ridge Regression)和Lasso回归(Lasso Regression)?它们与普通线性回…

从0开始学前端day1

script setup 在script里写一个setup的作用 自动注册子组件属性和方法无需返回,执行完后自动更新支持props和context Vue 3中的props和context props是一种用于父子组件通信的机制。父组件可以通过props向子组件传递数据,子组件则可以通过props接收来…

Cucumber-JVM的示例和运行解析

Cucumber-JVM 是一个支持 Behavior-Driven Development (BDD) 的 Java 框架。在 BDD 中,可以编写可读的描述来表达软件功能的行为,而这些描述也可以作为自动化测试。 Cucumber-JVM 的最小化环境 Cucumber-JVM是BDD的框架, 提供了GWT语法的相…

云原生机器学习平台cube-studio开源项目及代码简要介绍

1. cube-studio介绍 云原生机器学习平台cube-studio介绍:https://juejin.cn/column/7084516480871563272 cube-studio是开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征;数据源管理,支持结构数据和媒体标…

批量图像分割评估脚本:使用Python和OpenCV

在计算机视觉任务中,图像分割是一项重要的任务,而对分割结果进行评估则是验证模型性能的关键一环。本文将介绍如何使用Python和OpenCV编写一个简单的批量图像分割评估脚本,以评估分割模型的性能。 1. 问题背景 假设我们有一组GT&#xff08…

Linux:Vim

模式介绍: Vim具备6种基本模式和5中派生模式。 普通模式 启动后的默认模式,用于:移动光标、删除文本等待,常用命令: dd:删除当前行。[number]dd:连续执行number对应次数的dd命令&#xff0c…

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

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

Python Web --Django Web框架

场景 近日写了不少Python脚本,例如:爬虫、ocr、模型训练等。我认为可以更加了解python,因为近一个月使用Python给我的感觉比较好,代码比较简单,比java简单很多,而且python自己管理内存,更多依赖…

Linux: eBPF: bcc-tools:tcpdrop使用需要注意的问题

最近使用bcc-tools的时候注意到,bcc-tools(eBPF相关软件)的使用版本和内核的版本紧密程度非常高。因为要使用内核的函数或者结构体,所以就必须版本一致是必须的,不然会出现下面的警告或者错误: WARNING: tcp_drop() kernel function not found or traceable. The kernel …

Modbus RTU转Modbus TCP模块,RS232/485转以太网模块,YL102 多功能串口服务器模块

特点: ● Modbus RTU协议自动转换成Mobus TCP协议 ● 100M高速网卡,10/100M 自适应以太网接口 ● 支持 AUTO MDI/MDIX,可使用交叉网线或平行网线连接 ● RS232波特率从300到256000可设置 ● 工作方式可选择TCP Server, TCP Client, U…

四川天蝶电子商务有限公司助力商家赢在起跑线

随着电商行业的迅猛发展,越来越多的人选择在抖店上开设自己的店铺。作为一家专业的电子商务公司,四川天蝶电子商务有限公司为商家提供了一站式的抖店开店服务,帮助商家轻松开启电商之旅。 首先,四川天蝶电子商务有限公司拥有丰富的…

leetcode贪心算法题总结(一)

此系列分三章来记录leetcode的有关贪心算法题解,题目我都会给出具体实现代码,如果看不懂的可以后台私信我。 本章目录 1.柠檬水找零2.将数组和减半的最少操作次数3.最大数4.摆动序列5.最长递增子序列6.递增的三元子序列7.最长连续递增序列8.买卖股票的最…

事务管理解析:掌握Spring事务的必备技能!

AOP事务管理 1.1 Spring事务简介1.1.1 相关概念介绍1.1.2 转账案例-需求分析1.1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:创建JdbcConfig配置…

八股文打卡day12——计算机网络(12)

面试题:HTTPS的工作原理?HTTPS是怎么建立连接的? 我的回答: 1.客户端向服务器发起请求,请求建立连接。 2.服务器收到请求之后,向客户端发送其SSL证书,这个证书包含服务器的公钥和一些其他信息…

机器学习之人工神经网络(Artificial Neural Networks,ANN)

人工神经网络(Artificial Neural Networks,ANN)是机器学习中的一种模型,灵感来源于人脑的神经网络结构。它由神经元(或称为节点)构成的层级结构组成,每个神经元接收输入并生成输出,这些输入和输出通过权重进行连接。 人工神经网络(ANN)是一种模仿生物神经系统构建的…

【操作系统】探究驱动奥秘:驱动程序设计的解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏:Linux专栏:《探秘Linux | 操作系统解密》⏰诗赋清音:月悬苍穹泛清辉,梦随星河徜徉辉。情牵天际云千层,志立乘风意自飞。 目录 &…

数据库——LAMP的搭建及MySQL基操

1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作: (1)登录 MySQL,在 MySQL 中创建用户,并对…