@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)
更多扩展小伙伴们就自行理解吧