Hoy veremos cómo reemplazar cadenas en Python, es decir, reemplazar una cadena por otra, dentro de una cadena. Vamos a ver también un poco de reemplazo usando expresiones regulares a través del módulo re.
Te enseñaré dos ejemplos, uno en donde reemplazamos cadenas y otro en donde hacemos lo mismo pero a través de expresiones regulares en Python.
Si quieres reemplazar una letra por otra, y quieres que sea un algoritmo propio entonces mira este post.
Para una sustitución simple usamos a la función replace. Esta función devuelve una nueva cadena y su sintaxis es:
cadena_reemplazada = cadena_original.replace(busqueda, reemplazo, cuántas_veces)
Si no especificamos el argumento de cuántas veces, se reemplazarán todas las ocurrencias.
Para reemplazar cadenas en Python usando una expresión regular usamos re.sub
que tiene la siguiente sintaxis:
cadena_reemplazada = re.sub(expresión_regular, función_de_reemplazo, cadena_original)
En este caso tenemos algo muy poderoso: la función de reemplazo, que va a recibir el grupo de coincidencias y a partir de ello debe regresar la cadena que reemplaza a la coincidencia.
Primeramente esto sirve para buscar una cadena que coincida con una expresión regular, una vez que la encuentre, va a invocar a la función, en donde a partir de la cadena que coincida puede regresar otra cadena que será la que reemplaza.
Si queremos reemplazar una cadena literalmente, podemos invocar a replace
. En este caso vamos a reemplazar únicamente la primer ocurrencia:
cadena_original = "Hola mundo. Me gusta programar en JavaScript porque JavaScript es un buen lenguaje"
# Si especificamos el count, va a reemplazar solo esa cantidad de veces
cadena_reemplazada_una_vez = cadena_original.replace("JavaScript", "Python", 1)
print(cadena_reemplazada_una_vez)
La salida será:
Hola mundo. Me gusta programar en Python porque JavaScript es un buen lenguaje
En este caso solo se reemplazó por Python en una ocasión, pues el tercer argumento es 1.
Como lo dije anteriormente, si quieres reemplazar todas las ocurrencias, simplemente no especifiques el tercer argumento:
# Si no especificamos count, reemplazará todas las ocurrencias
cadena_reemplazada = cadena_original.replace("JavaScript", "Python")
print(cadena_reemplazada)
En este caso, la salida cambia a:
Hola mundo. Me gusta programar en Python porque Python es un buen lenguaje
El último ejemplo demuestra cómo reemplazar cadenas en Python usando expresiones regulares y una función de reemplazo por cada coincidencia de la búsqueda:
# También podemos reemplazar con funciones. Primero definimos la función de remplazo
def funcion_de_reemplazo(coincidencias):
coincidencia = coincidencias.group(
0) # En este caso aquí tenemos los/el dígito capturado
# Simple remplazo, si el número es 42 regresamos 1. Si es 23, regresamos 2. Esto obviamente es un simple ejemplo
if coincidencia == "42":
return "1"
else:
return "2"
cadena_original = """Me llamo Luis.
Mi número favorito es el 42, y yo tengo 23 años.
El 42 es mi número favorito porque es el * en ASCII,
y tengo 23 años porque nací hace esa misma cantidad de años"""
# Expresión regular que captura un dígito o más
expresion_regular = r"(\d+)"
reemplazada = re.sub(expresion_regular, funcion_de_reemplazo, cadena_original)
print("Antes de reemplazar: ")
print(cadena_original)
print("Después de reemplazar: ")
print(reemplazada)
Definimos la función que va a reemplazar cada grupo en la línea 2. Si en este caso no te importa lo que contenga el grupo, olvídate del if
y simplemente haz un return
de la cadena por la que se va a sustituir.
Por otro lado en la línea 17 declaramos la expresión regular, para que más tarde en la línea 18 hagamos el reemplazo. Finalmente imprimimos la salida.
El código completo del ejemplo queda así:
"""
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
____________________________________
/ Si necesitas ayuda, contáctame en \
\ https://parzibyte.me /
------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Creado por Parzibyte (https://parzibyte.me). Este encabezado debe mantenerse intacto,
excepto si este es un proyecto de un estudiante.
"""
import re
cadena_original = "Hola mundo. Me gusta programar en JavaScript porque JavaScript es un buen lenguaje"
# Si especificamos el count, va a reemplazar solo esa cantidad de veces
cadena_reemplazada_una_vez = cadena_original.replace("JavaScript", "Python", 1)
print(cadena_reemplazada_una_vez)
# Si no especificamos count, reemplazará todas las ocurrencias
cadena_reemplazada = cadena_original.replace("JavaScript", "Python")
print(cadena_reemplazada)
# También podemos reemplazar con funciones. Primero definimos la función de remplazo
def funcion_de_reemplazo(coincidencias):
coincidencia = coincidencias.group(
0) # En este caso aquí tenemos los/el dígito capturado
# Simple remplazo, si el número es 42 regresamos 1. Si es 23, regresamos 2. Esto obviamente es un simple ejemplo
if coincidencia == "42":
return "1"
else:
return "2"
cadena_original = """Me llamo Luis.
Mi número favorito es el 42, y yo tengo 23 años.
El 42 es mi número favorito porque es el * en ASCII,
y tengo 23 años porque nací hace esa misma cantidad de años"""
# Expresión regular que captura un dígito o más
expresion_regular = r"(\d+)"
reemplazada = re.sub(expresion_regular, funcion_de_reemplazo, cadena_original)
print("Antes de reemplazar: ")
print(cadena_original)
print("Después de reemplazar: ")
print(reemplazada)
Puedes leer más sobre Python en mi blog o en la documentación oficial sobre expresiones regulares o cadenas.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.