Tengo esta cadena inicial.Optimización de cobertura de cadenas en Python
'bananaappleorangestrawberryapplepear'
y también tienen una tupla con cadenas:
('apple', 'plepe', 'leoran', 'lemon')
Quiero una función para que desde la cadena inicial y la tupla con cuerdas obtengo esto:
'bananaxxxxxxxxxgestrawberryxxxxxxxar'
que sé cómo hacerlo de manera imperativa al encontrar la palabra en la cadena inicial para cada palabra y luego bucles carácter por carácter en todas las cadenas iniciales con palabras reemplazadas.
Pero no es muy eficiente y feo. Sospecho que debería haber alguna manera de hacer esto de manera más elegante, de una manera funcional, con itertools o algo así. Si conoce una biblioteca de Python que puede hacer esto de manera eficiente, por favor hágamelo saber.
ACTUALIZACIÓN: Justin Peel señaló un caso que no describí en mi pregunta inicial. Si una palabra es 'aaa' y 'aaaaaa' está en la cadena inicial, la salida debería verse como 'xxxxxx'.
El único problema que veo con esto es el siguiente caso de uso: una de las palabras es 'aaa' y la cadena s = 'aaaaa'. Este método daría el resultado de 'xxxaa' en vez de 'xxxxx' porque 'finditer' encuentra la siguiente coincidencia no superpuesta. Probablemente no aparecerá, pero depende de lo que el OP desee. –
Sí, no estaba claro para mí lo que debería suceder con la superposición de ejemplos de palabras. –
@Justin No pensé en ese caso, pero en el caso de la cadena 'aaaaaa', la palabra 'aaa' debería dar 'xxxxxx'. Pero realmente es un caso de esquina, podría vivir con 'xxxaa' si hay algo mejor. –