Karakters verwijderen die overeenkomen met een patroon

Python:
Karakters verwijderen die overeenkomen met een patroon

Hoe te:

import re

# Voorbeeld string
tekst = "Hallo, Wereld! 1234"

# Verwijder alle cijfers
geen_cijfers = re.sub(r'\d', '', tekst)
print(geen_cijfers)  # Output: "Hallo, Wereld! "

# Verwijder leestekens
geen_leestekens = re.sub(r'[^\w\s]', '', tekst)
print(geen_leestekens)  # Output: "Hallo Wereld 1234"

# Verwijder klinkers
geen_klinkers = re.sub(r'[aeiouAEIOU]', '', tekst)
print(geen_klinkers)  # Output: "Hll, Wrld! 1234"

Mijn aangepaste functie

Ik doe dit vaak genoeg dat ik het heb geherstructureerd in deze eenvoudige delete() functie. Het is ook een goede demonstratie van doctests:

def delete(tekst: str, regex: str) -> str:
    """
    >>> delete("Hallo, wereld!", "l")
    'Hao, wereld!'

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

Diepgaande Duik

De praktijk van het verwijderen van tekens die overeenkomen met een patroon in tekst heeft diepe wortels in de informatica, daterend uit de vroege Unix-tools zoals sed en grep. In Python biedt de re module deze mogelijkheid, waarbij reguliere expressies worden gebruikt - een krachtig en veelzijdig hulpmiddel voor tekstverwerking.

Alternatieven voor de re module omvatten:

  • String methoden zoals replace() voor eenvoudige gevallen.
  • Externe bibliotheken zoals regex voor complexere patronen en betere Unicode-ondersteuning.

Achter de schermen, wanneer je re.sub() gebruikt, compileert de Python-interpreter het patroon naar een reeks bytecodes, verwerkt door een staatmachine die direct patroonmatching uitvoert op de invoertekst. Deze bewerking kan hulpbronintensief zijn voor grote strings of complexe patronen, dus prestatieoverwegingen zijn cruciaal voor het verwerken van grote gegevens.

Zie ook