Zeichen löschen, die einem Muster entsprechen

Python:
Zeichen löschen, die einem Muster entsprechen

Wie geht das:

import re

# Beispielstring
text = "Hallo, Welt! 1234"

# Entferne alle Ziffern
keine_ziffern = re.sub(r'\d', '', text)
print(keine_ziffern)  # Ausgabe: "Hallo, Welt! "

# Entferne Satzzeichen
keine_satzzeichen = re.sub(r'[^\w\s]', '', text)
print(keine_satzzeichen)  # Ausgabe: "Hallo Welt 1234"

# Entferne Vokale
keine_vokale = re.sub(r'[aeiouAEIOU]', '', text)
print(keine_vokale)  # Ausgabe: "Hll, Wrld! 1234"

Meine benutzerdefinierte Funktion

Da ich dies häufig genug mache, habe ich es in diese einfache delete() Funktion umgearbeitet. Es ist auch eine gute Demonstration von Doctests:

def delete(string: str, regex: str) -> str:
    """
    >>> delete("Hallo, Welt!", "l")
    'Hao, Wet!'

    >>> delete("Hallo, Welt!", "[a-z]")
    'H, W!'
    """
    return re.sub(regex, "", string)

Tiefergehende Betrachtung

Die Praxis, Zeichen zu löschen, die einem Muster entsprechen, hat tiefe Wurzeln in der Informatik und führt zurück zu frühen Unix-Tools wie sed und grep. In Python bietet das Modul re diese Fähigkeit, wobei reguläre Ausdrücke genutzt werden – ein leistungsstarkes und vielseitiges Werkzeug zur Textverarbeitung.

Alternativen zum Modul re umfassen:

  • String-Methoden wie replace() für einfache Fälle.
  • Drittanbieter-Bibliotheken wie regex für komplexere Muster und bessere Unicode-Unterstützung.

Unter der Haube kompiliert der Python-Interpreter beim Einsatz von re.sub() das Muster in eine Reihe von Bytecodes, die von einer Zustandsmaschine verarbeitet werden, die das Muster-Matching direkt am Eingabetext durchführt. Diese Operation kann ressourcenintensiv sein für große Strings oder komplexe Muster, sodass Leistungsbetrachtungen für die Verarbeitung großer Datenmengen entscheidend sind.

Siehe auch