为了账号安全,请及时绑定邮箱和手机立即绑定

python使用re匹配字符串中重复出现的字母

python使用re匹配字符串中重复出现的字母

波斯汪 2019-04-19 16:29:23
(1)现在想要将字符串中连续出现的同个字母去重,如"abbbcccbba"->"abcba",使用re模块的话如何优雅的完成这件事情?(2)完成需求(1)后,能否顺便统计连续出现的个数,如"abbbcccbba"->"a1b3c3b2a1"?
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

(1)
>>>importre
>>>p=re.compile(ur"([a-zA-Z])(\1+)")
>>>s="abbbcccbba"
>>>p.sub(ur"\1",s)
'abcba'
>>>
(2)
>>>importre
>>>p=re.compile(ur"([a-zA-Z])(\1*)")
>>>s="abbbcccbba"
>>>p.sub(lambdam:m.group(1)+str(1+len(m.group(2))),s)
'a1b3c3b2a1'
                            
查看完整回答
反对 回复 2019-04-19
?
慕少森

TA贡献2019条经验 获得超9个赞

(1)
>>>importre
>>>p=re.compile(ur"(\w)(\1+)")
>>>s="abbbcccbba"
>>>p.sub(ur"\1",s)
'abcba'
>>>
(2)
importre
defcount(s):
p=re.compile(ur"(\w)(\1+)")
keys=list(p.sub(ur"\1",s))
words=list(s)
result=[]
#printkeys,words
forkinkeys:
n=0
#printwords
whilelen(words)>nandk==words[n]:
n=n+1
words=words[n:]
result.append((k,n))
#printresult
returnresult
if__name__=='__main__':
s="abbbcccbba"
result=count(s)
print''.join(["%s%s"%xforxinresult])
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 2063 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信