正则杂记-sub()灵活运用
之前第一篇介绍了sub()函数用法,常规我们都是替换一个常量字符,但是sub的功能远远不止这些
以一个例子引入
import re language = "javapythonc#c++c" def convert(args): pass a = re.sub("c#",convert,language,0) print(a) #out 这里得到一个很奇怪的字符串,c#消失了 javapythonc++c
通过以上发现convert既是函数又是参数,动态传参。取代了原本的常量字符,更加先进。
解释下args为convert传入的形参,实参就是"c#"。整个sub意为:将元字符串language的"c#"字符,替换为convert函数返回值,具体要替换为什么,交给后面的函数去做。
# 给你一个字符串,要求将大于等于6替换为9,小于6替换为0 s = ‘ABC3721086‘一般思路是遍历这个字符串,判断下是否为数字,是的话再一层判断大小,做替换。但是利用正则就简单多了。 def convert(value): match = value.group() if int(match) >= 6: return ‘9‘ else: return ‘0‘ print(re.sub("\d",convert,s)) #out ABC0900099通过上面的代码,感觉眼前一亮,sub函数每匹配到一个数字,就交给convert做处理,至于怎么处理的,sub不管,它只要一个返回字符串就行。
相关推荐
zlsdmx 2020-05-14
zluxingzhe 2020-02-29
blncle 2020-02-11
xuanlvhaoshao 2020-01-23
wklken的笔记 2020-01-05
宿舍 2019-12-20
明月清风精进不止 2019-10-23
houdaxiami 2019-03-25
Ongoingcre 2011-09-22
jsoncorleone 2016-02-25
kekekid 2010-04-04
宁静致远 2009-06-09
timewind 2019-07-01
jsqip 2019-07-01
UsherOu 2013-02-25
静心斋 2016-03-11
ScarletLina 2011-04-09
superhosts 2019-06-26