如何使用Python减少字符串中的重复字符

use*_*790 1 python string duplicate-removal

有没有办法将重复的字符减少到特定的数字,例如,如果我们有这个字符串.

"I liiiiked it, thaaaaaaank you"

预期产量: "I liiiiked it thaaaank you"

因此,如果重复的字符超过4,例如,它应该减少到只有4个字符,如果它小于或等于4,那么该字应该保持不变.

Joh*_*ooy 8

>>> import re
>>> s="I liiiiked it, thaaaaaaank you"
>>> re.sub(r"(.)(\1{3})(\1+)", r"\1\2", s)
'I liiiiked it, thaaaank you'
Run Code Online (Sandbox Code Playgroud)

此正则表达式查找3个组.

第一个是任何角色.第二个是同一个角色的3个,第三个是第一个角色中的一个或多个.

然后将这3组替换为组1和组2

这是一个更简单的方法

>>> re.sub(r"(.)\1{4,}", r"\1"*4, s)
'I liiiiked it, thaaaank you'
Run Code Online (Sandbox Code Playgroud)

这次只有一组(.),这是比赛的第一个字母.这必须是4次或更多次相同的字母\1{4,}.所以它匹配5个或更多相同的字母.替换就是这封信重复了4次.