Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Procesamiento de texto con Python, Unidad 5 — Expresiones regulares (regex), 5.2 — Regex aplicado a texto real ·

Sustituciones avanzadas

Sustituciones avanzadas

Introducción

Las expresiones regulares (regex) son una herramienta poderosa para procesar y manipular texto. Una vez que se dominan las sustituciones básicas, es hora de explorar cómo las regex pueden ser utilizadas para realizar operaciones más complejas y avanzadas en el procesamiento de texto. En este artículo, veremos varias técnicas de sustitución avanzadas, incluyendo ejemplos prácticos y un análisis de errores comunes a evitar.

Explicación principal con ejemplos

Sustituciones condicionales

Las sustituciones condicionales son útiles cuando se desea realizar una acción solo si ciertas condiciones se cumplen. Por ejemplo, supongamos que queremos reemplazar cualquier palabra que contenga números por una versión sin números.

import re

def remove_numbers(text):
    return re.sub(r'\b\d+\b', '', text)

# Ejemplo de uso
text = "El año 2023 es un buen año. Mi número favorito es 47."
print(remove_numbers(text))

Sustituciones en bloques

A veces, se necesita realizar una sustitución que dependa del contexto o el contenido adyacente. Por ejemplo, querramos reemplazar cualquier palabra que comience con "pre" seguida de un espacio y luego cualquier carácter.

def replace_prefix(text):
    return re.sub(r'\bpre\s\w+', 'ant', text)

# Ejemplo de uso
text = "Preparación, presupuesto, precio, prestar"
print(replace_prefix(text))

Sustituciones basadas en capturas

Las sustituciones basadas en capturas permiten reemplazar una parte específica del texto coincidente con una expresión regular. Por ejemplo, podemos querer reemplazar la primera ocurrencia de "Python" con "Java".

def replace_first_match(text):
    return re.sub(r'(\bPython\b)', 'Java', text, count=1)

# Ejemplo de uso
text = "Python es una buena opción para el desarrollo. Python es versátil."
print(replace_first_match(text))

Errores típicos / trampas

  1. Ignorar espacios en blanco: Las expresiones regulares pueden ignorar los espacios en blanco, lo que puede llevar a resultados inesperados.
    # Error: Ignora espacios al buscar "Python "
    text = "Python es una buena opción para el desarrollo."
    print(re.sub(r'Python ', 'Java', text))
  1. Capturas incorrectas: Si no se utilizan las capturas correctamente, puede ocurrir que se reemplacen más partes del texto de lo esperado.
    # Error: Reemplaza todas las ocurrencias de "Python", no solo la primera
    text = "Python es una buena opción para el desarrollo. Python es versátil."
    print(re.sub(r'(\bPython\b)', 'Java', text))
  1. Expresiones regulares demasiado generales: Las expresiones regulares muy generales pueden coincidir con más de lo esperado, lo que puede llevar a errores.
    # Error: Reemplaza más de lo esperado debido a la falta de especificación
    text = "Python es una buena opción para el desarrollo. Python es versátil."
    print(re.sub(r'Python', 'Java', text))

Checklist accionable

  1. Verifica espacios en blanco: Asegúrate de que las expresiones regulares sean sensibles a los espacios en blanco si es necesario.
  2. Utiliza capturas con cuidado: Asegúrate de utilizar las capturas solo cuando sea necesario para evitar reemplazos innecesarios.
  3. Especifica la coincidencia deseada: Si necesitas reemplazar solo una ocurrencia, utiliza el parámetro count.
  4. Prueba con ejemplos simples primero: Antes de aplicar sustituciones en grandes corpus, prueba con ejemplos más pequeños para asegurarte de que funcionan como se espera.
  5. Documenta las expresiones regulares: Mantén un registro de las expresiones regulares utilizadas y sus efectos para futuras referencias.

Cierre: Siguientes pasos

  • Practica con ejemplos reales: Aplica estas técnicas a datos reales y observa cómo funcionan.
  • Aprende más sobre regex: Explora patrones más avanzados y técnicas más complejas para manipulación de texto.
  • Automatiza procesos: Implementa estos métodos en tus pipelines de procesamiento de texto para automatizar tareas repetitivas.

¡Ahora que has aprendido a realizar sustituciones avanzadas con regex, estás listo para manejar un amplio rango de desafíos en el procesamiento de texto!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).