Eliminación de caracteres que coinciden con un patrón

Python:
Eliminación de caracteres que coinciden con un patrón

Cómo hacerlo:

import re

# Cadena de ejemplo
text = "Hola, Mundo! 1234"

# Eliminar todos los dígitos
no_digitos = re.sub(r'\d', '', text)
print(no_digitos)  # Salida: "Hola, Mundo! "

# Eliminar puntuación
sin_puntuacion = re.sub(r'[^\w\s]', '', text)
print(sin_puntuacion)  # Salida: "Hola Mundo 1234"

# Eliminar vocales
sin_vocales = re.sub(r'[aeiouAEIOU]', '', text)
print(sin_vocales)  # Salida: "Hl, Mnd! 1234"

Mi función personalizada

Lo hago con suficiente frecuencia como para refactorizarlo en esta simple función delete(). También es una buena demostración de doctests:

def delete(cadena: str, regex: str) -> str:
    """
    >>> delete("Hola, mundo!", "l")
    'Hoa, mundo!'

    >>> delete("Hola, mundo!", "[a-z]")
    'H, !'
    """
    return re.sub(regex, "", cadena)

Profundizando

La práctica de eliminar caracteres que coincidan con un patrón en el texto tiene raíces profundas en la informática, remontándose a herramientas Unix tempranas como sed y grep. En Python, el módulo re proporciona esta capacidad, aprovechando las expresiones regulares—una herramienta poderosa y versátil para el procesamiento de texto.

Alternativas al módulo re incluyen:

  • Métodos de cadena como replace() para casos simples.
  • Bibliotecas de terceros como regex para patrones más complejos y mejor soporte Unicode.

Bajo el capó, cuando usas re.sub(), el intérprete de Python compila el patrón en una serie de códigos de operación, procesados por una máquina de estados que realiza el coincidencia de patrones directamente en el texto de entrada. Esta operación puede ser intensiva en recursos para cadenas grandes o patrones complejos, por lo que las consideraciones de rendimiento son cruciales para el procesamiento de grandes volúmenes de datos.

Ver también