python正则对于分组情况使用re.sub()

@TOC
python中正则re模块是我们经常用到的,这里说一下替换功能re.sub方法

1.re.sub的适用情况

对于一段字符串,要将其中满足一段一定条件的子字符串转化成另一种指定字符(自定义,语文不好,将就着看)

举个例子,比如我们需要将所有数字转化成 *。
这时候使用replace会很麻烦,当然实现方法很多,都不是特别好

s = "1234nbxxcvb56123121312vbx312fda31"
for i in map(str,[a for a in range(10)]):
	s.replace(i,"*")

但是用re.sub就能很方便的解决了

s = "1234nbxxcvb56123121312vbx312fda31"
re.sub("\d","*",s)
2.对于分组匹配的情况的使用

先来看一下这段代码

>>>s
'"[{\\"from\\":1,\\"price\\":1,324,\\"priceFormat\\":\\"1,324\\",\\"to\\":9999}]"'
>>>re.sub(":\d+(,)\d+",'',s)
'"[{\\"from\\":1,\\"price\\",\\"priceFormat\\":\\"1,324\\",\\"to\\":9999}]"'

这段代码我想要替换掉 price:1,324 中的
按照我最初的想法,这样写应该就可以了
但是,他直接全部替换了,没有替换分组中的内容

查阅资料才发现原来分组的替换不是这么写的

正确的用法是这样的,指定需要保留的分组就好了

re.sub("(:\d+)(,)(\d+)",r'\1\3',s)

更多扩展小伙伴们就自行理解吧

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值