例如,有一个类似的字符串aaaaaab,其中a重复n次(在这种情况下,n = 6).我怎么能得到数字n?
然后,如果我想使用n将其替换 a为n/2次aaab,或n-2次aaaab.怎么办呢?
s = 'aaaaabbcdddddddd'
[(m.group(1), len(m.group(2))+1) for m in re.finditer(r'(\w)(\1*)', s)]
Run Code Online (Sandbox Code Playgroud)
回报
[('a', 5), ('b', 2), ('c', 1), ('d', 8)]
Run Code Online (Sandbox Code Playgroud)
要使用它来替换字符组:
re.sub(r'(\w)(\1*)', lambda m: m.group(1)*f(len(m.group(2))+1), s)
Run Code Online (Sandbox Code Playgroud)
有:
f = lambda x: x - 2 # returns 'aaadddddd'
f = lambda x: x / 2 # returns 'aabdddd'
f = lambda x: x + 1 # returns 'aaaaaabbbccddddddddd'
Run Code Online (Sandbox Code Playgroud)