veces valor una repite repetidos repetido quitar que ocurrencias numero lista las elementos duplicados cuantas contar python regex

python - valor - Detectar repeticiones en cuerda.



python quitar duplicados (1)

import re def repetitions(s): r = re.compile(r"(.+?)/1+") for match in r.finditer(s): yield (match.group(1), len(match.group(0))/len(match.group(1)))

encuentra todas las coincidencias de repetición no superpuestas, utilizando la unidad de repetición más corta posible:

>>> list(repetitions("blablabla")) [(''bla'', 3)] >>> list(repetitions("rablabla")) [(''abl'', 2)] >>> list(repetitions("aaaaa")) [(''a'', 5)] >>> list(repetitions("aaaaablablabla")) [(''a'', 5), (''bla'', 3)]

Tengo un problema simple, pero no puedo venir con una solución simple :)

Digamos que tengo una cuerda. Quiero detectar si hay una repetición en ella.

Me gustaría:

"blablabla" # => (bla, 3) "rablabla" # => (bla, 2)

La cosa es que no sé qué patrón estoy buscando (no tengo "bla" como entrada).

¿Alguna idea?

EDITAR:
Viendo los comentarios, creo que debo precisar un poco más de lo que tengo en mente:

  • En una cadena, hay un patrón que se repite o no.
  • El patrón repetido puede ser de cualquier longitud.

Si hay un patrón, se repetirá una y otra vez hasta el final. Pero la cadena puede terminar en el medio del patrón.

Ejemplo:

"testblblblblb" # => ("bl",4)