El método replace en Python permite editar cadenas de texto sin necesidad de código extra.

Si recién comenzaste a estudiar Python, lo más probable es que tu primer programa mostrara la frase:

print("Hello, world!")

Muy pronto querrás modificar ese mensaje, por ejemplo:

print("Hello, job!")

Para reemplazar una palabra por otra en Python, es conveniente usar el método replace(). En este artículo, analizaremos cómo funciona. Esperamos que, después de aprender a usarlo, te sea igual de fácil encontrar tu primer «job».

Qué es replace en Python

El método replace() en Python es una función incorporada para trabajar con cadenas de texto que tiene la siguiente sintaxis:

cadena.replace(qué_reemplazar, con_qué_reemplazar, cuántas_veces_reemplazar)

Formalmente, se ve así:

str.replace(old, new, count=-1)
Ejemplo de código utilizando el método replace en Python para sustituir texto en una cadena. Se cambia "mundo" por "universo".
Código conciso que demuestra la función del método replace() en Python para modificar cadenas de texto.

Mira lo que sucede aquí:

  • str — es el nombre de la variable que almacena la cadena original. Podría verse así, por ejemplo: text = "¡Hello, world!".
  • old — es la subcadena que se debe encontrar y reemplazar. En la cadena ¡Hello, world! cambiaremos la palabra world. En general, una subcadena es cualquier secuencia de caracteres dentro de una cadena. Puede ser una palabra, parte de una palabra o un solo carácter. Es decir, además de la palabra world, podríamos elegir como subcadena Hello, lo o incluso solo o.
  • new — es la subcadena que se coloca en lugar de old. En nuestro ejemplo, esa subcadena será la palabra job.
  • count — es un parámetro opcional que permite especificar cuántas de las primeras coincidencias se deben reemplazar. Si no se especifica count o se establece explícitamente en count=-1, se reemplazarán todas las coincidencias. Por ejemplo, si en la cadena Python hello, hello, hello reemplazamos hello por hi con el parámetro count=2, el resultado será Python hi, hi, hello. Pero si dejamos el valor por defecto, obtendremos Python hi, hi, hi.

En la siguiente sección, veremos ejemplos de cómo usar el método replace(). Para asimilar mejor el material, intenta replicarlos por tu cuenta. Para ello, necesitas instalar Python y elegir un editor de código. Y si no quieres instalar nada, utiliza el servicio gratuito Google Colab y ejecuta el código directamente en tu navegador.

Cómo usar el método replace()

Antes de ver los ejemplos, presta atención a un detalle más: el método replace() distingue entre mayúsculas y minúsculas.

Esto significa que percibe las cadenas World y world como secuencias de caracteres diferentes, por lo que solo funcionará con una coincidencia exacta al reemplazar. Y ahora, a la práctica.

Sustitución simple de una palabra. Completaremos el ejemplo de la introducción y reemplazaremos nuestra única aparición de la palabra world por job:

text = "Hello, world!"
new_text = text.replace("world", "job")
print(new_text)

# Hello, job!

Adicionalmente, comprobaremos la sensibilidad a mayúsculas y minúsculas. Intentemos reemplazar job por Job y nos aseguraremos de que el resultado no cambie:

text = "Hello, job!"
new_text = text.replace("Job", "developer")
print(new_text)

# Hello, job!

Trabajando con caracteres. Reemplazaremos todos los puntos en la oración por comas y veremos cómo el método replace() maneja los caracteres individuales:

text = "Python. Is. Easy. To. Learn!"
new_text = text.replace(".", ",")
print(new_text)

# Python, Is, Easy, To, Learn!

Sustitución parcial. Usaremos el parámetro count y modificaremos un poco la línea de la canción de Nirvana:

text = "Hello, hello, hello, how low"
new_text = text.replace("hello", "hi", 2)
print(new_text)

# Hello, hi, hi, how low

Sustitución múltiple. Continuaremos analizando la línea de la canción de Nirvana, pero ahora reemplazaremos varias palabras a la vez:

text = "Hello, hello, hello, how low\nWith the lights out, it's less dangerous\nHere we are now, entertain us"
new_text = (
    text.replace("hello", "hi")
        .replace("low", "high")
        .replace("lights", "mood")
        .replace("dangerous", "chill")
)
print(new_text)

# Hello, hi, hi, how high
# With the mood out, it's less chill
# Here we are now, entertain us

Eliminar parte de una cadena. En Python, una cadena vacía también se considera una cadena, por lo que con replace() se pueden eliminar fragmentos de texto innecesarios. Para ello, basta con indicar lo que queremos eliminar y pasar comillas vacías "" como reemplazo. Por ejemplo, eliminemos los guiones de un número de teléfono para que solo queden los dígitos:

phone = "+51-495-123-45-67"
cleaned_phone = phone.replace("-", "")
print(cleaned_phone)

# +514951234567```

Mini-proyecto para reforzar lo aprendido: creamos un filtro de texto con replace()

En proyectos reales, el método replace() se utiliza a menudo para procesar y transformar textos. Por ejemplo, con su ayuda se pueden limpiar comentarios de palabras no deseadas, corregir errores tipográficos o ocultar datos confidenciales como nombres, números de teléfono, etc.

Vamos a crear un filtro de texto simple: le añadiremos una lista de frases “malas” y las reemplazaremos por asteriscos al introducir texto.

  • Paso 1. Crearemos una lista de palabras que el programa buscará en el texto:
bad_words = [
    "php mejor que python",
    "escribo código sin pruebas",
    "Stack Overflow murió",
    "amo xml",
    "maquetando en divanes",
    "depurando en producción",
    "todo funciona, no lo toques",
    "escribí mi propio framework",
    "solo agrega IA",
    "java es la mejor",
    "todo en jQuery",
    "css es simple",
    "no necesito tu git",
    "lo principal es que funcione",
    "el tipado impide la creatividad"
]
  • Paso 2. Le preguntaremos al usuario qué quiere escribir:
user_text = input("Introduce el texto: ")
  • Paso 3. Recorreremos en un bucle todas las palabras de nuestra lista y las reemplazaremos por asteriscos de la misma longitud:
for word in bad_words:
    stars = "*" * len(word)
    user_text = user_text.replace(word, stars)
  • Paso 4. Mostraremos el texto editado después de la censura:
print("Resultado:")
print(user_text)

Ahora intenta pegar la siguiente frase en el campo de entrada o inventa una tuya: «Yo escribo código sin pruebas, y todo funciona, — no entiendo para qué es necesario». Como resultado, deberías ver muchos asteriscos:

Yo *******************, y todo funciona, — no entiendo para qué es necesario.

Nuestro programa está listo, pero siempre se puede mejorar. Intenta, por ejemplo, hacer que no distinga entre mayúsculas y minúsculas, ampliar la lista de palabras no deseadas o configurar el filtrado de varias palabras en una sola frase.

Categorizado en:

Python,