Python进行批量字符替换的3种方法

一、问题的提出

之前,我写过一篇如何在word中计算数学算式:

如何用Python批量计算Word中的算式-CSDN博客

为了计算算式,就需要对算式进行格式化,把不规则的算式转换成规则的算式,这时就会涉及到一些字符的批量替换。如我们把算式:

1.3×14×2×[1+(76-50)/120]

转换成下面的规则算式,这样才能让Python中的eval()函数进行计算。

1.3*14*2*(1+(76-50)/120)

那么,如何把这里面的乘号替换成星号,把方括号替换中圆括号呢?这里我们采用下面的3种方法,通过python来实现。

二、批量字符替换的方法

1. replace法

利用replace函数,对于字符串中的三个字符进行多次替换,不需要导入其它的包,可以一次替换完成,并通过eval和round打印出保留2位小数后的结果,代码如下:

#replace法
s = "1.3×14×2×[1+(76-50)/120]"
if "×" or "[" in s:s = s.replace("×","*").replace("[","(").replace("]",")")
print(round(eval(s),2))

2. 字典法

我们可以制作一个替换用的字典,通过Python循环字典,对于符合要求的字符进行检测,如果在字典里可以查询到,就进行替换。

# 字典法
dic = {"x":"*","[":"(","]":")"}
for k,v in dic.items():s.replace(k,v)
print(round(eval(s),2))

以上是遍历的字典,只需要循环3次即可,下面我还可以通过利用字典+列表推导式的形式实现。这里主要采用了字典的get()方法,替换转换为列表后的字符,然后再用join()函数合成。

s = "1.3×14×2×[1+(76-50)/120]"
dic = {"x":"*","[":"(","]":")"}
s = [dic.get(i,i) for i in s] #也可以使用这个列表推导式实现。
s = "".join(s)
print(round(eval(s),2))

3. maketrans法

用maketrans生成映射表,然后用translate进行批量替换,代码如下:

#maketrans映射法
s = "1.3×14×2×[1+(76-50)/120]"
intab = "×[]"
outtab = "*()"
transtab = str.maketrans(intab,outtab)
s = s.translate(transtab)
print(round(eval(s),2))

4. 效果展示

以下是在thonny中运行的效果展示:

字符替换效果展示

三、学后反思

  1. 三种方法都可以高效地实现替换,第一种最常见,第二种思路最清晰,第三种使用起来更简单一些。
  2. 考虑到制作字典比较麻烦,可以采用第三种方法,或者用zip()把两个字符列表组合成字典,再采用第二种方法进行替换。
  3. 第一种方法不太适用于3个以上字符的替换,那样代码量多,而且写起来比较复杂,建议采用第二种和第三种方法来解决。

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

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

相关文章

山西电力市场日前价格预测【2024-01-03】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-03)山西电力市场全天平均日前电价为208.80元/MWh。其中,最高日前电价为358.56元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计出…

Windows上ModbusTCP模拟Master与Slave工具的使用

场景 Modbus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用: Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用_modbus poll激活-CSDN博客 数据对接协议为Modbus TCP,本地开发需要使…

水果软件2024FL Studio21.3mac苹果中文版

FL STUDIO21发布,提供您一直在等待的出色工作流程功能。通过新效果、多个播放列表曲目选择和无所畏惧的撤消一切编辑,将您的音乐带入2024年。FL Studio21中文完整版是一个功能齐全、开放式架构的PC音乐创作和制作环境。它具有基于音乐音序器的图形用户界…

【番外】在Windows安装Airsim/UE4踩坑合集

在Windows安装Airsim/UE4踩坑合集 1.安装过程中一定要确保Epic Games Launcher是英文环境,保存路径什么的也尽量是英文。2.UE4中的虚幻引擎一定要安装4.27版本以上的,不然的话最后运行vs的时候会报语法错误,网上根本查不到的那种错误。换了版…

Android 13 - Media框架(29)- MediaCodec(四)

上一节我们了解了如何通过 onInputBufferAvailable 和 getInputBuffer 获取到 input buffer index,接下来我们一起学习上层如何拿到buffer并且向下写数据的。 1、获取 input Buffer 获取 MediaCodec 中的 buffer 有两种方式,一种是调用 getInputBuffers…

【ArcGIS微课1000例】0083:地震灾害图件制作之土壤类型分布图

本文基于1:400万矢量土壤图,制作甘肃积石山6.2级地震100km范围内土壤类型分布图。 文章目录 一、土壤分布图预览二、数据集来源及简介三、土壤分布图制作一、土壤分布图预览 二、数据集来源及简介 1. 数据来源 数据集为1:400万中国土壤图,1:400万中国土壤图(2000)由中国科…

BloombergGPT—金融领域大模型

文章目录 背景BloombergGPT数据集金融领域数据集通用数据集分词 模型模型结构模型相关参数训练配置训练过程 模型评估评估任务分布模型对比金融领域评估通用领域评估 背景 GPT-3的发布证明了训练非常大的自回归语言模型(LLM)的强大优势。GPT-3有1750亿个…

工程(十七)——自己数据集跑R2live

博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论。 r2live是比较早的算法,编译过程有很多问题,通过以下两个博客可以解决 编译R2LIVE问题&解决方法-CSDN博客 r2live process has died 问题解决了_required process …

3Dmax模型打开后灯光全没了---模大狮模型网

在3ds Max中,有时您可能会打开一个3dmax模型文件后发现灯光似乎丢失了。这可能是由于以下原因之一导致的: 灯光层被隐藏或删除了。在3ds Max中,您可以将不同的对象分配给不同的层,以方便管理和编辑。如果灯光对象被分配到另一个层…

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(二)

Matplotlib绘图技巧(二) 写在前面2. 函数间区域填充函数fill_between()和fill()参数: 3. 散点图 scatter4. 直方图 hist5. 条形图 bar5.1 一个数据样本的条形图参数: 5.2 多个数据样本进行对比的直方图5.3 水平条形图参数 5.4 绘制…

堆排序(C语言版)

一.堆排序 堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 升序:建大堆 降序:建小堆 2. 利用堆删除思想来进行排序 1.1.利用上下调整法实现堆排序 第一步:建堆 好了,每次建堆都要问自己…

ArkTS基本概念装饰器

目录 ArkTS基本概念 装饰器汇总 ArkTS基本概念 ArkTS是HarmonyOS的主力应用开发语言。 它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨…

cocos creator + vscode debug

安装插件 安装插件:JavaScript Debugger 配置 7456 为本地cocos creator的启动端口 启动debug调试 选择对应的启动方式

低成本TB级数据库技术选型之思考两三点

一、背景 前段时间在搞毕业论文的选题,最头疼的就是大量的文献检索和阅读,从研究的角度上我们可以将文献分为四类: 理论文献:为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关,甚至由于理…

叫板GPT-4的Gemini,我做了一个聊天网页,可图片输入,附教程

先看效果: 简介 Gemini 是谷歌研发的最新一代大语言模型,目前有三个版本,被称为中杯、大杯、超大杯,Gemini Ultra 号称可与GPT-4一较高低: Gemini Nano(预览访问) 为设备端体验而构建的最高效模型,支持离线使用场景。…

基于PI控制的PMSM永磁同步电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PMSM数学模型 4.2 矢量控制策略 4.3 PI控制器设计 4.4 控制系统实现 5.完整工程文件 1.课题概述 基于PI控制的PMSM永磁同步电机控制系统simulink建模与仿真。其中,基于PI(…

查看ios app运行日志

摘要 本文介绍了一款名为克魔助手的iOS应用日志查看工具,该工具可以方便地查看iPhone设备上应用和系统运行时的实时日志和奔溃日志。同时还提供了奔溃日志分析查看模块,可以对苹果奔溃日志进行符号化、格式化和分析,极大地简化了开发者的调试…

极值和平均值-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第22讲。 极值和平均值&…

java设计模式实战【策略模式+观察者模式+命令模式+组合模式,混合模式在支付系统中的应用】

引言 在代码开发的世界里,理论知识的重要性毋庸置疑,但实战经验往往才是知识的真正试金石。正所谓,“读万卷书不如行万里路”,理论的学习需要通过实践来验证和深化。设计模式作为软件开发中的重要理论,其真正的价值在…

【心得】PHP反序列化高级利用(phar|session)个人笔记

目录 ①phar反序列化 ②session反序列化 ①phar反序列化 phar 认为是java的jar包 calc.exe phar能干什么 多个php合并为独立压缩包,不解压就能执行里面的php文件,支持web服务器和命令行 phar协议 phar://xxx.phar $phar->setmetadata($h); m…