有没有办法将重复字符减少到特定数量,例如,如果我们有这个字符串。
“我喜欢它,thaaaaaaank 你”
预期输出:“I liiiike it thaaaank you”
因此,如果重复的字符超过 4 个,例如,它应该减少到只有四个字符,如果它小于或等于 4,那么单词应该保持不变。
请您参考如下方法:
>>> import re
>>> s="I liiiiked it, thaaaaaaank you"
>>> re.sub(r"(.)(\1{3})(\1+)", r"\1\2", s)
'I liiiiked it, thaaaank you'
此正则表达式查找 3 个组。
第一个是任意字符。第二个是相同字符的 3 个以上,第三个是第一个字符的一个或多个。
然后这 3 组被第 1 组和第 2 组替换
还有一个更简单的方法
>>> re.sub(r"(.)\1{4,}", r"\1"*4, s)
'I liiiiked it, thaaaank you'
这次只有一组(.),就是匹配的第一个字母。这后面必须跟同一个字母 4 次或更多次 \1{4,}。所以它匹配 5 个或更多相同的字母。替换的只是那个字母重复了 4 次。
