第11.23节 Python 中re模块的搜索替换功能:sub及subn函数

【自用】吉林大学计算机系统结构第二章:缓存优化 曲冠南老师版 笔记 容量8KB,2的十三次方,块大小16B,一块用掉四位,剩余2的九次方是标志位,则有512行,每个元素8B,则一块两个元素,a数组150块,b数组152块,不出现容量失效。不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。 阅读详情

一、 引言
在《第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer》重点介绍了几个搜索函数,除了搜索,re模块也提供搜索并替换功能,这个就是re模块的sub函数。

二、 语法释义

  1. 调用语法:
    re.sub(pattern, repl, string, count=0, flags=0)
    re.subn(pattern, repl, string, count=0, flags=0)

  2. 参数:
    1)pattern:匹配的正则表达式;
    2)string:搜索文本字符串
    3)repl:替换对象,将搜索文本中和模式匹配的字符串替换为repl对象对应的内容,repl可以是,或者是字符串一个函数
    4)count:用于限制最多替换多少次,为0或者没有传入则全部替换;
    5)flags:搜索标记,与《第11.2节 Python 正则表达式支持函数概览》介绍的参数flags标记含义相同。

  3. 返回值:
    sub返回通过使用 repl 替换在通过正则表达式模式搜索到的字符串。 如果没有找到匹配子串,则直接返回 string。
    subn与sub函数一样执行搜索替换,但是不是返回替换后的字符串,而是返回一个元组,元组的第一个元素是替换后的字符串(该元素与sub返回值相同),第二个元素是执行替换的次数。

三、 关于repl参数的说明

  1. 可以是字符串,如为字符串,则其中任何反斜杠转义序列都会被按转义结果处理, 也就是说,\n 会被转换为一个换行符,\r 会被转换为一个回车附,…。 未知的 ASCII 字符转义序列会被当作错误来处理,其他未知转义序列例如 \&会保持原样;
  2. repl如果是字符串,可以使用组名如\g或组序号如 \1、\g<序号>的后向引用,实际处理时会使用组匹配结果的对应组所匹配到的子字符串来执行目标串的替换;
  3. 如果repl是函数类型:
    1)函数只能带一个参数,参数类型必须是匹配对象;
    2)该匹配对象是Python每匹配到一个搜索串时调用,由于搜索内容是由整个正则表达式确认的,因此一般情况下搜索串应该是以代表整个搜索内容的组0对应结果作为处理数据进行处理,除非有特殊处理要求再考虑使用其他组;
    3)Python在每匹配到一个该函数对匹配对象处理的结果进行处理后的返回内容作为替换字符串。

四、 案例

  1. 分别调用sub和subn使用字符串作为替换内容,字符串包含组名和组序号
>>> re.sub(r'(?i)(?P<lab>py\w*)',r'\1:\g<1>:\g<lab>->Python','Python?PYTHON!Learning python with LaoYuan! ')
'Python:Python:Python->Python?PYTHON:PYTHON:PYTHON->Python!Learning python:python:python->Python with LaoYuan! '

>>>re.subn(r'(?i)(?P<lab>py\w*)',r'\1:\g<1>:\g<lab>->Python','Python?PYTHON!Learning python with LaoYuan! ')
('Python:Python:Python->Python?PYTHON:PYTHON:PYTHON->Python!Learning python:python:python->Python with LaoYuan! ', 3)
>>>

上述案例中,\1:\g<1>:\g<lab>都是访问的匹配的字符串,除了不论大小写的“python”,其他诸如“py”、“pyth”等py开头的字符串都会被替换为“Python”。

  1. 使用函数作为替换内容
    本案例将小说的中文章节中的数字替换为阿拉伯数字,定义了函数transnumber将中文数字翻译成阿拉伯数字,在正则表达式中找章节并调用函数transnumber执行替换。
>>> def transnumber(m):
    numbdict={'零':'0','一':'1','二':'2','三':'3','四':'4','五':'5','六':'6','七':'7','八':'8','九':'9','十':'','百':''}
    result=[]
    for i in m.group(0):result.append(numbdict[i])
    resultstr = ''.join(result)
    print("group(0):",m.group(0),"groups:",m.groups(),"result:",resultstr)
    return resultstr

>>> re.sub(r'(?<=第)([一-十零百]+)(?=[章,回])',transnumber,'第一回第二回第九十七回第一百零八回第七百二十二回')
group(0): 一 groups: ('一',) result: 1
group(0): 二 groups: ('二',) result: 2
group(0): 九十七 groups: ('九十七',) result: 97
group(0): 一百零八 groups: ('一百零八',) result: 108
group(0): 七百二十二 groups: ('七百二十二',) result: 722
'第1回第2回第97回第108回第722回'

>>> re.subn(r'(?<=第)([一-十零百]+)(?=[章,回])',transnumber,'第一回第二回第九十七回第一百零八回第七百二十二回')
group(0): 一 groups: ('一',) result: 1
group(0): 二 groups: ('二',) result: 2
group(0): 九十七 groups: ('九十七',) result: 97
group(0): 一百零八 groups: ('一百零八',) result: 108
group(0): 七百二十二 groups: ('七百二十二',) result: 722
('第1回第2回第97回第108回第722回', 5)
>>>

老猿Python,跟老猿学Python!
博客地址:https://blog.youkuaiyun.com/LaoYuanPython

请大家多多支持,点赞、评论和加关注!谢谢!

内存学习(3):DRAM的基础存储结构(存储层级、读写过程,刷新与暂存) DRAM,全称为 Dynamic Random Access Memory ,中文名是“动态随机存取存储器”。所谓“动态”是和“静态”相对应的,芯片世界里还有一种 SRAM 静态随机存取存储器的存在。笼统地说,DRAM 的结构比 SRAM 更简单,面积占用更小,适合制作大容量的存储芯片;而 SRAM 结构复杂一些,一般使用六个晶体管,面积消耗大,但是读写速度快,而且因为 SRAM 只用到晶体管,所以在工艺上和逻辑芯片相兼容,我们可以在逻辑芯片上直接集成 SRAM。 阅读详情

相关推荐

数字IC后端项目典型问题之后端实战项目问题记录

数字IC后端培训教程之数字后端实战项目问题debug及解决方案记录

weixin_37584728的博客 1713

python中sub函数_第11.23节 Python 中re模块的搜索替换功能:sub及subn函数

二、语法释义调用语法:re.sub(pattern, repl, string, count=0, flags=0)re.subn(pattern, repl, string, count=0, flags=0)参数:1)pattern:匹配的正则表达式;2)string:搜索文本字符串3)repl:替换对象,将搜索文本中和模式匹配的字符串替换为repl对象对应的内容,repl可以是,或者是字符串...

weixin_39761696的博客 454

三种 绘制奈奎斯特曲线 的方法

如何绘制Nyquist曲线 提供三种绘制方法,其中使用最广泛的是概略图绘制方法 ①解析法绘制 ②概略图法绘制 ③MATLAB绘制

weixin_46664967的博客 6万+

python 正则表达式 sub_python 正则表达式 re.sub & re.subn

python正则表达式模块简介Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化...

weixin_39616798的博客 281

基于STM32的RS485土壤氮磷钾与PH传感器数据采集与OLED显示实战(附完整代码)

本文详细介绍了基于STM32单片机通过RS485协议采集土壤氮磷钾与PH传感器数据的实战项目。涵盖硬件选型、连接方法、Modbus-RTU通信协议解析、STM32程序实现及OLED显示,提供完整代码和调试技巧,适用于农业物联网环境监测系统。

kotlin6android的博客 335

保姆级教程:用CST 2023一步步复现一个1-8GHz Vivaldi天线(含参数优化与结果分析)

本文提供了一份详细的CST 2023教程,指导读者如何从零开始设计并优化1-8GHz Vivaldi天线。内容涵盖工程设置、参数化建模、仿真加速技巧以及性能优化策略,特别适合需要实现宽带天线设计的工程师和研究人员。通过实战案例,帮助用户掌握Vivaldi天线的核心设计要点和CST高级功能应用。

weixin_30800987的博客 618

Python 正则表达式使用--Re 模块详解

目录 1. 常用正则表达式符号和特殊字符 ?2.? Re 模块:核心函数和方法 2.1 re.compile() 编译函数 2.1.1?re.compile() 语法格式 2.1.2?re.compile() 用法 2.2 re.match() 和 re.search() 匹配和搜索函数 2.2.1?re.match() 语法格式 2.2.2?re.match() 用法 2.2.3?re.search() 语法格式 2.2.4?re.search() 用法 2.3 re.findall() 和 re.fin

m0_67392931的博客 2348

基于dify平台批量分析excel格式信息

如何以表格形式批量输入一些信息,然后让大模型以对话应用形式逐条进行推理分析?请逐行分析以下数据,给出推理结果:{{input}}这里提供一个分步解决方案,结合。

knightissocool的博客 8008

python正则表达式re.sub()函数解析(替换字符串中的匹配项)

正则表达式(Regular Expression)是用于描述字符序列模式的语法规则集合。它可以用来检查一个串是否含有某种子串、将匹配的子串替换或从中提取出子串等。re.sub()函数是Python正则表达式工具箱中非常有用的一个工具,可以处理复杂的文本替换任务。掌握其用法对于任何需要文本处理的程序员来说都是极其重要的。通过上述示例和解释,我们对re.sub()函数有了更加深入的了解,并可以在实际编程中灵活运用。

Dontla的博客 1万+

Visual MODFLOW Flex 6.1新手入门:从数据导入到3D建模的完整工作流解析

本文为Visual MODFLOW Flex 6.1新手提供了从零开始构建地下水数值模型的完整工作流指南。详细解析了从项目规划、数据准备与导入,到构建三维概念模型、生成并运行数值模型,直至结果可视化与校准的核心步骤。帮助水文地质与环工领域初学者快速掌握这一专业软件,高效完成从数据到三维建模的全过程。

a1b2c的博客 800

(12)单相降压自耦变压器的等效电路和仿真模型

本文根据电机学基本原理,从单相双绕组变压器的接线方式出发,建立基本方程并导出T型等效电路。然后将双绕组变压器演变成一种降压自耦变压器,详细地建立起单相降压自耦变压器的数学模型以及导出相对应的等效电路,最后用Matlab/simulink的simscape元件库元件建立了基于单相自耦变压器的T型等效电路的仿真模型。用实例仿真验证了本文工作的正确性。

weixin_45670943的博客 1046

python中re.sub函数使用

re.sub用于替换字符串中的匹配项。re.sub的函数原型为:re.sub(pattern, repl, string, count)1. Example1:将字符串中的空格 ' ' 替换成 '_' : 2.Example1:将字符串中的空格 ' ' 给去掉 : 其中第二个函数是替换后的字符串;本例中为'_'或者''第四个参数指替换个数。默认为0,表示每个匹配项都替换。re.sub还允许使用函数对匹配项的替换进行复杂的处理。如:re.sub(r'\s', lambda m: '[' + m

hunter168_wang的专栏 1万+

传感器使用——ESP-WROOM-32 and INMP441麦克风音频采集

传感器使用——ESP-WROOM-32 and INMP441麦克风音频采集,数据显示及matlab操作界面。

qq_41958946的博客 7354

python re.subn方法_第11.23节 Python 中re模块的搜索替换功能:sub及subn函数

二、语法释义调用语法:re.sub(pattern, repl, string, count=0, flags=0)re.subn(pattern, repl, string, count=0, flags=0)参数:1)pattern:匹配的正则表达式;2)string:搜索文本字符串3)repl:替换对象,将搜索文本中和模式匹配的字符串替换为repl对象对应的内容,repl可以是,或者是字符串...

weixin_39768762的博客 975

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python 函数正则表达式-re.finditer() re.split() re.sub() subn()(三)

@R星校长 第3关:re 模块中常用的功能函数(二) 本关需要掌握: finditer()函数; split()函数; sub()函数; subn()函数。 以下实例均可在命令行窗口中练习。 finditer()函数 搜索字符串,返回一个Match对象的迭代器(包含匹配的开始和结束的位置,如下图中的i所示)。找到正则匹配的所有子串,把它们作为一个迭代器返回。 格式:re.finditer(pattern, string, flags=0); itext = re.finditer(r'\d+','12.

qq_44745905的博客 1285

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

re 模块中常用的功能函数(二)

任务描述 本关任务:编写代码,匹配相应的内容。 相关知识 为了完成本关任务,你需要掌握: 1.finditer()函数; 2.split()函数; 3.sub()函数; 4.subn()函数。 以下实例均可在命令行窗口中练习。 finditer()函数 搜索字符串,返回一个Match对象的迭代器(包含匹配的开始和结束的位置,如下图中的i所示)。找到正则匹配的所有子串,把它们作为一个迭代器返回。 格式:re.finditer(pattern, string, flags=0); itext = re.find

qq_41579955的博客 2521

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python实现字符串替换_python里实现字符串替换

>>>aa="hi">>>num=[0,1,2,3,4,5]>>>foriinnum:ifi>0:print(aa)hihihihihi上面这个就是实现“把某个字符串,反复出现某list里满足条件的元素次数”,这个得到的结果是一个str,如果要简化一下这段代码如下:>>>[aaforiinnumif...

weixin_30341121的博客 2929

第3关:re 模块中常用的功能函数(二)

Python正则表达式

Online_Yan的博客 903

Python re模块常用方法简要总结

本文简要归纳了python re模块的常用方法。

yivifu的专栏 267

Python中的re模块(二)

1. finditer()函数 搜索字符串,返回一个Match对象的迭代器(包含匹配的开始和结束的位置)。找到正则匹配的所有子串,把它们作为一个迭代器返回。 格式: re.finditer(pattern, string, flags=0) 例如: import re itext = re.finditer(r'\d+','12 edueduedu44coder deducoder, 11skdh ds 12') #匹配所有的数字 for i in itext: print(

Bo_B0的博客 962

【Python 每日一技】文本查找和替换

【Python 每日一技】文本查找和替换

weixin_37780776的博客 2466

73_Python正则表达式之匹配分组和其他功能函数

re.sub() 或者 re.subn() 使用指定的符号替换内容,re.subn() 会现实替换的次数,re.sub不会显示。|:表示或者,正则表达式1|正则表达式2|正则表达式3,只要满足其中一个正则表达式即可。.:表示匹配除了换行之外的任意字符,\.就表示一个普通的符号,而不是正则表达式中的.re.compile() 表示编译正则表达式,用于提高正则匹配的效率。\:表示转义字符,让正则表达式中的字符失去原有的意义。():表示一个整体,表示分组,然后捕获。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 764

Python re正则表达式

re 正则模块 正则指的是一种规则(或是一种表达式):用于匹配字符串 主要作用就是通过正则表达式来处理字符串,或者从中过滤出我们想要的内容。 定义好规则以后,它会去字符串中查找符合规则的字符。 正则表达式和语言无关,几乎所有编程语言都会用到。但re模块是Python独有的 下面来介绍匹配规则的写法,规则书写借鉴至:博客园一位优秀博主 下面来使用re模块配合上面的规则来匹配字符 正则匹配规则 字符匹配规则 import re res=re.findall('el','hello 123_*&am

Simple子夜 1365

Python实用技法第24篇:正则:查找和替换文本

上一篇文章:Python实用技法第23篇:正则:文本模式的匹配和查找下一篇文章:Python实用技法第25篇:正则:以不区分大小写的方式对文本做查找和替换 1、需求

weixin_33908217的博客 893
上一篇: 第11.22节 Python 中re模块的字符串分割器:split函数
下一篇: 第11.24节 Python 中re模块的其他函数
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值