码迷,mamicode.com
首页 > 其他好文 > 详细

正则杂记-sub()灵活运用

时间:2020-05-11 13:40:38      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:abc   pass   大小   mat   lang   rgs   第一篇   通过   python   

之前第一篇介绍了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不管,它只要一个返回字符串就行。

正则杂记-sub()灵活运用

标签:abc   pass   大小   mat   lang   rgs   第一篇   通过   python   

原文地址:https://www.cnblogs.com/riNgo-joy0/p/12868379.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!