0

文字が3つ以上連続する単語をreallyにreallyに置き換えようとしています。

pattern = re.compile(r"(.)\1\1{2,}", re.DOTALL)
return pattern.sub(r"\1\1\1", text)

私はそれを働かせることができません 誰かが助けることができますか?

4

2 に答える 2

0

必要がない場合は、正規表現を使用しないことをお勧めします。このタスクは、より読みやすい方法で、線形時間と一定の空間の複雑さ (正規表現については不明) を使用せずに簡単に実行できます。

def filter_repetitions(text, max_repetitions=0):
    last_character = None
    repetition_count = 0
    for character in text:
        if character == last_character:
            repetition_count += 1
        else:
            last_character = character
            repetition_count = 0
        if repetition_count <= max_repetitions:
            yield character

print ''.join(filter_repetitions("fooo baaaar actuallly", 1))
于 2013-04-19T19:34:31.253 に答える