Slette tegn som samsvarer med et mønster

Python:
Slette tegn som samsvarer med et mønster

Slik gjør du det:

import re

# Eksempelstreng
tekst = "Hallo, Verden! 1234"

# Fjern alle sifre
ingen_sifre = re.sub(r'\d', '', tekst)
print(ingen_sifre)  # Utdata: "Hallo, Verden! "

# Fjern tegnsetting
ingen_tegnsetting = re.sub(r'[^\w\s]', '', tekst)
print(ingen_tegnsetting)  # Utdata: "Hallo Verden 1234"

# Fjern vokaler
ingen_vokaler = re.sub(r'[aeiouAEIOU]', '', tekst)
print(ingen_vokaler)  # Utdata: "Hll, Vrdn! 1234"

Min egendefinerte funksjon

Jeg gjør dette ofte nok til at jeg omstrukturerte det til denne enkle delete()-funksjonen. Det er også en god demonstrasjon av doctests:

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

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

Dypdykk

Praksisen med å slette tegn som samsvarer med et mønster i tekst har dype røtter i datavitenskap, som går tilbake til tidlige Unix-verktøy som sed og grep. I Python gir re-modulen denne muligheten, og bruker regulære uttrykk – et kraftig og allsidig verktøy for tekstbehandling.

Alternativer til re-modulen inkluderer:

  • Strengmetoder som replace() for enkle tilfeller.
  • Tredjepartsbiblioteker som regex for mer komplekse mønstre og bedre støtte for Unicode.

Under overflaten, når du bruker re.sub(), kompilerer Python-tolken mønsteret til en serie bytecode, behandlet av en tilstandsmaskin som utfører mønstersøking direkte på inngangsteksten. Denne operasjonen kan være ressurskrevende for store strenger eller komplekse mønstre, så ytelseshensyn er avgjørende for behandling av store datamengder.

Se også