关于 re.sub 部分替换的解决办法

news2024/9/20 18:42:22

关于 re.sub 部分替换的解决办法

    • 写作背景
    • 问题重现
    • 解决办法
    • 代码详解
    • 结尾

写作背景

最近本菜鸡遇到一个问题,我想将字符串中某一部分替换成指定内容,而且为了定位到要替换的内容,所以使用正则的时候还需要前后一些字符作为锚点,这可让我犯了难。
不过查阅相关文章后,我确定了如何解决,并写下此篇文章以记录。
如果觉得我这篇文章写的好的话,能不能给我 点赞评论收藏 一条龙(☆▽☆)。如果要点个 关注 的话也不是不可以🤗。

请各位参加一下文末的 投票 哦,如果 有什么不足之处,还 请各位大佬在评论区提出,不胜感激。

问题重现

拿一个网址 https://www.xxx.com/?count=5&begin=1&userid=111 为例。
全部替换大家应该都会,比如说我想要将 begin=1 替换为 start=12 ,就可以使用下述代码解决。
![在这里插入图片描述](https://img-blog.csdnimg.cn/bed6e010556c4731ac9d8e4edddfd2ae.png可以看到,啪的一下他就运行出来了,很快噢。

那么问题来了,如果说我想要将参数 begin 的值修改为 12 应该怎么办呢?

我最初单纯地以为简简单单地加上 括号 的使用如下所示即可达成目标,却不曾想结果不尽人意,如下图所示。
在这里插入图片描述
可以看到,它直接把 begin=1 这个整体替换成了 12 ,这可不是我们预期的效果。

解决办法

既然自己搞不定,那肯定要寻求外部帮助。于是在我千辛万苦的探索后,我找到了 这篇问答 。
在这里插入图片描述
因为都是英文,我也懒得仔细看,不过根据这段代码我看出了些端倪。

可以看到,替换的字符串中 \1 的位置变成了 不想被替换的部分 ,所以我可以大胆猜测 \1 的作用就是 代替部分替换中不想要被替换的部分,那这么一来,我们使用 括号 将不想被替换的部分括住,在替换字符串中用 \1 代替这一部分,问题也就迎刃而解了。
(我以前还真不知道有这操作,我好菜啊,别骂つ﹏⊂)

代码详解

基于那篇问答的解决方案,针对上边提出的问题,我的解决思路如下。

re.sub('(begin=)\d+', r'\1' + '12', url)

看一下结果。
在这里插入图片描述
好像还是不太对劲,被替换的部分直接变成了 J ,什么原因呢?

应该是 \112 结合起来变成了 \112 ,就是 ASCII 码中的第 112 位字符,即 J ,所以这两部分不可直接相加,那怎么办?

我的解决方案是 只括住 begin 作为不改变的部分而将 = 作为被替换字符的一部分 ,结果如下图所示。
在这里插入图片描述
成功完成目标!!!
如果有什么其他的解决办法也可在评论区进行讨论。

备注:可能会有人问为什么不直接把 12\1 写到一个引号中,是因为实际使用过程中使用的是 变量 ,而不是这个确定的值,所以就分开写咯。




结尾

有想要一起学习 python 的小伙伴可以 私信我 进群哦。

以上就是我要分享的内容,因为 学识尚浅会有不足,还 请各位大佬指正
有什么问题也可在评论区留言。
在这里插入图片描述

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

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

相关文章

linux下基本命令

linux下基本命令一、linux相关快捷键二、linux下内部命令和外部命令2.1 内建命令2.2 外部命令2.3 内建命令和外部命令对比2.4 命令类型查看方法2.4 内建命令和外部命令帮助三、man手册四、相对路径和绝对路径五、pwd和cd命令六、mkdir创建目录七、rmdir删除目录八、linux文件类…

JMeter如何自定义HTTP组件

JMeter是一个优秀的开源项目,我们可以在jmeter的官网了解到如何使用和如何二次开发:Apache JMeter - Apache JMeter™ 因工作需要,最近做了一个JMeter自定义的http组件(其实就是在http的基础上加了点东西而已)。现就该…

TCO-PEG5-amine,NH2-PEG5-TCO,反式环辛烯-五聚乙二醇-氨基广泛应用于生物学研究

TCO-PEG5-NH2中英文名: CAS号:N/A | 英文名:TCO-PEG5-amine,TCO-PEG5-NH2 |中文名:反式环辛烯-五聚乙二醇-氨基TCO-PEG5-NH2物理参数: CASNumber:N/A Molecular formula:C21H40N2O7…

没有实施APS软件的工厂,常常面临的问题

对于制造工厂车间的运行而言,计划是核心的业务。制造工厂面对这么多订单并行生产执行、受制于有限的制造资源,如何安排次序、如何权衡轻重缓解,其实都是计划的范畴,计划执行过程总是受到各种形式的干扰或冲击,如何综合…

虹科分享 | 网络性能监控 | 网络中的应用性能意味着什么?

TCP协议的可靠性 数据包丢失是对网络的破坏,因为它导致延迟。TCP协议建立了可靠的数据传输,但掩盖了丢包的影响。TCP确保数据的传输是基于一个叫做 "滑动窗口 "的概念。这种机制控制着传输的字节序列和收到的确认。 在排序的帮助下&#xff…

项目管理之信息文档管理与配置管理(第一篇)

目录 前言 一、软件文档的分类 1.开发文档 2.产品文档 3.管理文档 二、文档质量的四个等级 1.1级文档 2.内部文档(2级) 3.工作文档(3级文档) 4.正式文档(4级文档) 三、配置管理 1.配置管理的定义…

XCTF-web1文件包含绕过file include

场景一: fileclude 题目描述 好多file呀! 进入场景 给出PHP源码 包含flag.php文件 GET获取两个参数file1和file2 当参数不为空时,使用file_get_contents()函数将文件内容读入字符串,判断是否为"hello ctf" 利用ph…

vue项目前端优化处理方案整理

vue项目前端优化处理 目录 vue项目前端优化处理 路由懒加载 按需引入模块 外部资源引入,cdn加载 移除项目中所有的console.log()控制台信息数据打印 是否在构建生产包时生成sourcdeMap 上传图片文件压缩 开启gizp压缩 前端页面代码优化 路由懒加载 路由懒…

【深度学习】特征图的上采样(nn.Upsample)和转置卷积(nn.ConvTranspose2d) | pytorch

文章目录前言一、nn.Upsample 上采样二、nn.ConvTranspose2d 转置卷积前言 这次就不废话了,我想赶在10点前回去洗头(现在9.17,还差一篇文章) 一、nn.Upsample 上采样 该函数有四个参数: 参数的介绍如下&#xff1a…

工厂模式(Factory Pattern) 与抽象工厂模式(Abstract Factory Pattern)

工厂模式(Factory Pattern) 与抽象工厂模式(Abstract Factory Pattern) 工厂模式属于构造型模式,是项目中最常用到的一种设计模式。它的主要作用是提供一种简单的创建对象的方式,使用者无需知道创建实例的细节以及需要…

重启虚拟机启动Docker常见问题

文章目录重启虚拟机启动Docker常见问题一、Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?二、admin is not in the sudoers file. This incident will be reported.(没有这个问题请自觉跳过)三、…

华清远见11.17

1.在用户空间中有个字符数组,要求在内核空间打印,用dmesg查看。(ioctl实现) zy.h,封装一个发送用的命令码 #ifndef __LED_H__ #define __LED_H__ #define UACCESS_BUF _IOW(a,1,char [128]) #endif zy.c 申请并自动创…

2022 开源之夏|EMQ 三大开源项目开发圆满收官

今年暑假,EMQ 携手开源之夏,与高校学生开展了一场精彩纷呈的开源之旅。开源之夏(OSPP)是由中科院软件所「开源软件供应链点亮计划」发起的、面向高校学生的暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护&a…

CE-Net: Context Encoder Network for 2D MedicalImage Segmentation

Title:用于二维医学图像分割的上下文编码器网络 摘要:在医学图像分割领域中,基于UNet已经成为主流的应用框架。但是在UNet结构中连续的池化和跨步卷积操作会导致一些空间信息的丢失。在本文中提出了一个上下文编码器网络(简称为CE-Net&#…

数据分析师的Windows装机必备软件

文章目录1. Python安装包列表2. Office 3653. Visual Studio Code4. Git5. 向日葵6. 聊天软件7. OneDrive8. iCloud9. 网易邮箱大师10. 搜狗输入法11. 阿里云盘对于数据分析师,装机是再经常不过的一件事情,但是每次装机都要想装什么好,找来找去,故列出来供大家参考. 当然, 系统…

CentOS7自有服务和软件包

文章目录什么是服务管理服务的命令:systemctl列出服务服务启停开机自动启动服务服务状态软件包RPM查询安装了什么软件卸载某个软件安装某个软件查询文件所属的包名查询软件安装后,生成了哪些文件YUM命令epel-release什么是服务 什么是程序(C…

最优化——凸优化概述

引言 这是中科大最优化理论的笔记,中科大凌青老师的凸优化课程,详尽易懂,基础扎实。不论是初学者还是从业多年的人,都值得系统地好好学一遍。 本文主要介绍什么是凸优化,通过几个例子来阐述什么是凸优化问题。让大家…

3年测试经验,面试27k自动化测试岗被diss,想给进阶自动化的人提个醒...

毕业后一直从事功能测试的工作,时间久了就没有一点想法,天天都是点点点,也没有一点提升,看着身边一个个的人都忙得不可开交,打听之后知道他们都是在技术上忙,而不像我,在杂事上忙,特…

vue 使用screenfull 实现全屏展示,全局水印实现, 以及全屏放大后部分组件无法使用,水印无法全屏显示问题的解决

需求:1. web项目中看板页面需要单独全屏显示 2. 项目全局增加水印,水印文字为当前用户登录姓名,登录页不显示水印 出现问题描述 单页面进行全屏显示,下拉,时间选择器,抽屉等组件被 全屏覆盖到下一层&…

MyBatis入门基础

目录 1.什么是MyBatis 2.第一个MyBatis查询 2.1 准备工作 2.2 实际操作 2.2.1 定义接口 2.2.2 创建XML实现上述接口 2.3 单元测试 2.3.1 单元测试的优势 2.3.2 创建并使用单元测试 2.3.3 有关断言 3.增删改的基本操作 3.1 插入操作 特殊的添加:返…