(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'
慕少森
TA贡献2019条经验 获得超9个赞
(1)>>>importre>>>p=re.compile(ur"(\w)(\1+)")>>>s="abbbcccbba">>>p.sub(ur"\1",s)'abcba'>>>(2)importredefcount(s):p=re.compile(ur"(\w)(\1+)")keys=list(p.sub(ur"\1",s))words=list(s)result=[]#printkeys,wordsforkinkeys:n=0#printwordswhilelen(words)>nandk==words[n]:n=n+1words=words[n:]result.append((k,n))#printresultreturnresultif__name__=='__main__':s="abbbcccbba"result=count(s)print''.join(["%s%s"%xforxinresult])
添加回答
举报
0/150
提交
取消