前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一技:re.sub第二个参数使用函数

一日一技:re.sub第二个参数使用函数

作者头像
青南
发布2019-01-09 16:02:39
2.8K0
发布2019-01-09 16:02:39
举报
文章被收录于专栏:未闻Code未闻Code

在Python的正则表达式模块re中,我们常用的一个方法是 re.sub。它的作用是正则替换。我要把字符串 abc123xyz456中的数字替换为 *号(例如在脱敏模块中去掉电话号码):

代码语言:javascript
复制
>>> import re
>>> a = 'abc123xyz456'
>>> b = re.sub('\d+', '*', a)
>>> print(b)
abc*xyz*

现在假设字符串变成了 abc123789xyz456,前面的数字有6位,后面的数字有3位。我想把数字逐位替换为星号: abc******xyz***。用正则表达式模块如何快速实现?

代码语言:javascript
复制
import re

def repl(obj):
    length = len(obj.group(0))
    return '*' * length

y = re.sub('\d+', repl, 'abc123789xyz456')
print(y)   # abc******xyz***

这说明, re.sub的第二个参数,除了是普通字符串外,还能够是一个函数。这个函数接受了一个match对象。所有被匹配到的数据会被传入这个函数中。于是你就能在这个函数中对这个数据做任何你想做的处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档