Вы не можете (легко, используя регулярные выражения) заменить это на "пустую строку", которая имеет ту же длину, что и замещаемый текст. Вы можете заменить его пустой строкой ""
или одним пробелом " "
или любой другой константой по вашему выбору; Я использовал "*"
в этом примере, чтобы было легче увидеть, что происходит.
>>> re.sub(r"(\W)\1{3,}", "*", "12345<><>aaaaa%%%11111<<<<..>>>>")
'12345<><>aaaaa%%%11111*..*'
>>>
Обратите внимание: оно не меняется "<> <>" ... Я предполагаю, что "неалфавитные символы, встречающиеся более 3 раз" означают, что должен встречаться один и тот же символ более чем в 3 раза ". Я также предполагаю, что вы имели в виду" более 3 ", а не" 3 или более ".