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

news2024/11/25 15:47:27

一、问题的提出

之前,我写过一篇如何在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.coloradmin.cn/o/1350053.html

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

相关文章

Spring见解 1

1.Spring概述 1.1.Spring介绍 ​ Spring是轻量级Java EE应用开源框架(官网: http://spring.io/ ),它由Rod Johnson创为了解决企业级编程开发的复杂性而创建 1.2.简化应用开发体现在哪些方面? IOC 解决传统Web开发中…

uni-app App.vue生命周期全局样式全局存储globalData

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

小企业是否应该采用SD-WAN组网?

在当今数字化时代,企业成功的关键之一是建立稳定高效的网络连接。无论企业规模大小如何,网络都是实现高效运营和达成业务目标的重要组成部分。对于小企业而言,考虑成本效益和资源管理显得尤为重要。那么,对于小企业来说&#xff0…

Rust赋值语句和数字类型

赋值语句 在Rust中,使用let关键字定义变量。格式是let 变量名:变量类型 变量值;,下边是个例子: let age:i32 18;这就是定义一个有符号32位的数字变量age,而其中的值是18。 而在C语言定义变量的语句格式是类型 变量名 变量值。…

2023年“中银杯”安徽省网络安全B模块(部分解析)

前言 以下是2023年中银杯安徽省网络安全B模块题目,镜像可以私聊我 B模块安全事件响应/网络安全数据取证/应用安全(400 分) B-1:CMS网站渗透测试 任务环境说明: √服务器场景:Server2206(关…

详解动态顺序表

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

SIC产业链简述

同第一代硅半导体产业链类似,SiC产业链也分为以下几个环节: 设备和材料环节,包括晶体生长炉、MOCVD、切割设备、碳粉/硅粉/SiC粉体、石墨件等耗材; SiC衬底合外延环节,包括导SiC晶体生长、衬底晶片、外延片等制造&am…

[嵌入式专栏](FOC - 单电阻,双电阻,三电阻采样原理)

文章目录 1 . 前言2 . 三电阻方案2.1 电路接法2.2 采样原理2.3 采样注意事项 3 . 双电阻方案3.1 电路接法3.2 采样原理3.3 采样注意事项 4 . 单电阻方案4.1 电路接法4.2 采样原理4.3 采样注意事项4.4 采样时机4.5 开关管状态-电流方向 5 . 运放接法6 . AD采样周期7 . 小结 【极…

Dryad数据库学习

从一篇science论文中看到数据存储在了这个平台,这里分享一下:datadryad.org 亲测无需注册,可以直接下载,从一个数据测试看,数据存储在亚马逊云,下载速度还可以,6M/s的样子。 Dryad 是一个开放的…

Kioptrix-5

环境搭建 将原来的网络适配器删除掉,重新配置一个即可! 靶场下载地址:Kioptrix: 2014 (#5) ~ VulnHub 信息收集 nmap -sn 192.168.1.0/24 -oN live.port 发现存活主机为192.168.1.159,探测开放的端口信息: # nmap…

2024年最火爆的前端技术:虚拟DOM让页面性能飞升!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 前言 正文 📘 一、什么是虚拟D…

KBDNO1.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复

不少小伙伴,求助电脑报错“KBDNO1.DLL文件缺失,软件或游戏无法启动或运行”,应该怎么办? 首先,我们先来了解“KBDNO1.DLL文件”是什么? KBDNO1.DLL是Windows操作系统中的一个动态链接库文件,主…

Nginx解决跨域问题过程

学习Nginx解决跨域问题 结果 server {listen 22222;server_name localhost;location / {if ($request_method OPTIONS) {add_header Access-Control-Allow-Origin http://localhost:8080;add_header Access-Control-Allow-Headers *;add_header Access-Control-Allo…

Debezium日常分享系列之:Debezium 通知

Debezium日常分享系列之:Debezium 通知 一、概论二、Debezium通知格式三、Debezium 有关初始快照状态的通知四、Debezium 有关增量快照进度的通知五、启用 Debezium 通知六、访问 Debezium JMX 通知七、自定义通知渠道八、应用案例 一、概论 Debezium 通知提供了一…

Excel中部分sheet页隐藏并设置访问密码

1、新建sheet1 2、新建sheet2 3、隐藏sheet2 4、保护工作簿、输密码 5、密码二次确认 6、隐藏的sheet2已经查看不了 7、想要查看时,按图示输入原密码即可 8、查看sheet2内容

混合编程—C++程序中python脚本的嵌入方法(理论部分)

一、C与Python高级编程语言简概 (一)C C是一种被广泛使用的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程范式,例如过程化程序设计(Procedural programming)、面向对象程序设计(…

no和not的应用场景

语法 后面直接跟名词:no 后面不是跟名词:not 案例

java struts2教务管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java struts2 教务管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 struts2 框架开发,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发,数据库…

深度学习|2.11 向量化vectorization

2.11 向量化的作用 向量化可以使得向量中的每一个维度的数据进行并行计算,从而加快了神经网络的计算速度。 验证 其他

详解 MySql InnoDB 的 MVCC 实现机制

目录 一. 前言 二. 认识 MVCC 2.1. 什么是 MVCC? 2.2. 什么是当前读和快照读? 2.3. 当前读、快照读和 MVCC 的关系 2.4. MVCC 能解决什么问题,好处是什么? 2.5. 小结 三. MVCC 的实现原理 3.1. 隐式字段 3.2. undo 日志…