正则替换 | 学习笔记

简介: 快速学习 正则替换

开发者学堂课程【Python入门 2020年版正则替换】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10450


正则替换


正则表达式作用是用来对字符串进行检索和替换

检索: MatchsearchfulLmatchfinditerfindall

替换: sub

想把一个字符串中的数字全部替换成 x,该怎么做。

t = 'afo2dlkf23af245qou3095'

print(re.sub(r'\d', 'x' , t))

输出的结果为:

afoxdlkfxxafxxxqouxxxx

print(re.sub(r'\d+', 'x' , t))

输出的结果为:
afoxdlkfxafxqoux

如果加一个”+“,连在一起的数字都只会变成一个x

第一个参数是正则表达式

第二个参数是新字符或者一个函数

第三个参数是需要被替换的原来的字符串

这个时候我们试图将第二个参数变成一个函数会是什么情况。

p = hello34good23

def test():

pass

print(re.sub(r' ld' , test,p))

运行后会报错:

image.png

Test 需要0个位置参数但是给了1个。Test 函数是自动调用的。

def test(x):

print(x)

print(re.sub(r' ld' , test,p))

这个时候输出的结果就是:

<re.Match object; span=(56), match='3 '>

<re.Match object; span=(67), match='4'>

<re.Match object; span=(1112) match='2 '>

<re.Match object; span=(1213) match='3'>

Hellogood

sub 内部在调用 test 方法时,会把每一个匹配到的数据以 re.Match 的格式传参。

拿到 group(0)之后我们就可以进行下一步操作,我们尝试将这些数字乘2

def test(x):

y = int(x.group(0))

y *= 2

return str(y)

print(re.sub(r' \d' , test,p))

这个时候我们在输出的结果就是:

hello68good46。

我们就可以把数字成功乘2了。注意返回的时候不能直接返回y的值,应该返回一个字符串,返回 str(y)

如果我们想把两个数字变成一个整体,我们就需要用到+,就要变成:

print(re.sub(r' \d+' , test,p)),如果字符串变成 hello35good23,

会输出 hello70good463546被看成一个整体了。

相关文章
|
JavaScript 前端开发
如何判断一个对象的键名内是否含有某个值
如何判断一个对象的键名内是否含有某个值
199 0
|
开发框架 Java 关系型数据库
虚拟机部署与发布J2EE项目(Linux版本)
虚拟机部署与发布J2EE项目(Linux版本)
234 0
|
大数据 PHP 区块链
区块链开发公司浅析未来区块链的发展趋势
 目前,企业的实际应用集中数字货币领域,属于虚拟经济。我们认为,未来的区块链应用将脱虚向实,更多传统企业使用区块链技术来降成本、提升协作效率,激发实体经济增长,是未来一段时间区块链应用的主战场。   与公有链不同,在企业级应用中,大家更关注区块链的管控、监管合规、性能、安全等因素。
1860 0
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1100 152