Reemplazar cadenas en Python

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.

Cambiar una letra por otra

Si quieres reemplazar una letra por otra, y quieres que sea un algoritmo propio entonces mira este post.

Reemplazo de cadenas en Python

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.

Usando expresiones regulares

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.

Ejemplo: reemplazo de primer ocurrencia

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.

Reemplazando todas las ocurrencias

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

Ejemplo con expresión regular

Reemplazo de cadenas en Python – Expresión regular

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.

Poniendo todo junto

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *