¿Qué es reemplazar la última coincidencia con Python?
Vamos a ver dos formas en las que podemos reemplazar la última coincidencia con Python. Es decir, partimos de una cadena de texto con una frase y buscamos la última vez que aparece una palabra para sustituirla.
Este tipo de operación es útil en una variedad de casos, incluyendo la manipulación de texto en procesamiento de lenguaje natural, limpieza de datos, y en la creación de interfaces de usuario que requieren personalización basada en la entrada del usuario.
Por ejemplo, si partimos de la frase:
💻 “Hola Víctor, ¿Cómo estás?. Quería comentarte, Víctor.”
Vemos que hay dos veces que aparece el nombre “Víctor”. Lo que buscamos es ver cómo podemos sustituir la segunda vez que aparece el nombre “Víctor”. De esta manera que al hacer este tipo de sustitución por otro nombre, como puede ser “Marta”, la frase destino quedará de la siguiente forma:
💻 Hola Víctor, ¿Cómo estás?. Quería comentarte, Marta.
Para poder realizar este proceso de reemplazar la última coincidencia con Python tenemos dos formas: la primera será utilizando la función rfind()
que realiza búsquedas por la derecha de la cadena de texto y la segunda es mediante rsplit()
.
Definiendo las variables y cadenas
Lo primero será definir las variables con las que vamos a realizar el ejemplo, estas variables contendrán tres cosas. En primer lugar cadena
contendrá la cadena que tiene el texto original, luego la variable buscar
será la cadenas que queremos buscar en el texto original y por último, tenemos reemplazarpor
que será dónde definamos la palabra por la cual queremos realizar la sustitución. Eso sí, sustituiremos solo la última coincidencia.
El código en Python de la definición de variables quedará de la siguiente forma:
cadena = "Hola Víctor, ¿Cómo estás?. Quería comentarte Víctor." buscar = "Víctor" reemplazarpor = "Marta"
Una vez que tenemos configuradas las variables, es momento de ponernos manos a la obra para reemplazar la última coincidencia con Python.
Reemplazar la última coincidencia con rfind
De la primera forma utilizamos la función rfind()
la cual nos ayudará a buscar la última coincidencia de forma rápida, devolviéndonos la posición en la que se encuentra.
indice = cadena.rfind(buscar)
Ahora, simplemente, deberemos recurrir al slicing de las cadenas en Python (tratar a las cadenas como si fuesen arrays) para poder extraer partes de la frase.
cadenareemplazada = cadena[0:indice] + reemplazarpor + cadena[indice+len(buscar):]
Simplemente será concatenar desde el principio hasta dónde hemos encontrado la coincidencia, añadimos la palabra a reemplazar y desde dónde hemos encontrado la coincidencia, más el tamaño de la palabra buscada, que lo obtendremos mediante la función len()
, hasta el final, será nuestra nueva frase.
Utilizando rsplit
La segunda forma recurre a una función que trocea la cadena en partes, en concreto la función rsplit()
. La función rsplit()
nos permite dividir la cadena por un delimitador (o palabra), pero además, como podemos confirmar mediante su sintaxis, nos permite limitar el número de veces que realizamos el split.
str.rsplit(sep=None, maxsplit=- 1)
Es por ello que dividiremos la cadena por la palabra buscada, pero solo una única vez.
dividida = cadena.rsplit(buscar,1)
Como resultado, tendremos una lista con dos ocurrencias: la primera será el inicio de la frase hasta la última ocurrencia y la segunda será desde el final de la última ocurrencia hasta el final de la frase.
Ya solo nos quedará unir la dos partes añadiendo la nueva palabra. Para ello recurrimos a la función join()
aplicándola sobre la palabra que queremos usar como reemplazo.
cadenareemplazada = reemplazarpor.join(dividida)
Así ya conocemos las dos formas en las que podemos reemplazar la última coincidencia con Python. ¿Se te ocurre alguna otra forma de hacerlo? Déjanoslo en los comentarios.