Python:
Kaavan mukaisten merkkien poistaminen
Kuinka:
import re
# Esimerkkimerkkijono
teksti = "Hello, World! 1234"
# Poistetaan kaikki numerot
ei_numeroita = re.sub(r'\d', '', teksti)
print(ei_numeroita) # Tuloste: "Hello, World! "
# Poistetaan välimerkit
ei_valimerkkeja = re.sub(r'[^\w\s]', '', teksti)
print(ei_valimerkkeja) # Tuloste: "Hello World 1234"
# Poistetaan vokaalit
ei_vokaaleja = re.sub(r'[aeiouAEIOU]', '', teksti)
print(ei_vokaaleja) # Tuloste: "Hll, Wrld! 1234"
Oma räätälöity funktioni
Teen tätä tarpeeksi usein, joten muodostin yksinkertaisen delete()
funktion. Se on myös hyvä esimerkki doctesteista:
def delete(merkkijono: str, regex: str) -> str:
"""
>>> delete("Hello, world!", "l")
'Heo, word!'
>>> delete("Hello, world!", "[a-z]")
'H, !'
"""
return re.sub(regex, "", merkkijono)
Syväsukellus
Merkkijonosta kuviota vastaavien merkkien poistamisen käytäntö juontaa juurensa syvälle tietojenkäsittelytieteeseen, aina varhaisiin Unix-työkaluihin kuten sed
ja grep
. Pythonissa re
-moduuli tarjoaa tämän kyvyn, hyödyntäen säännöllisiä lausekkeita – tehokkaan ja monipuolisen työkalun tekstinkäsittelyyn.
Vaihtoehtoja re
-moduulille sisältävät:
- Merkkijonomenetelmät kuten
replace()
yksinkertaisiin tapauksiin. - Kolmannen osapuolen kirjastot kuten
regex
monimutkaisempiin kaavoihin ja parempaan Unicode-tukeen.
Kun käytät re.sub()
, Python-tulkki kääntää kaavan joukoksi tavukoodeja, joita tilakone käsittelee suorittaen kuviotäsmäyksen suoraan syötetekstissä. Tämä operaatio voi olla resurssi-intensiivistä suurille merkkijonoille tai monimutkaisille kaavoille, joten suorituskyvyn huomioiminen on tärkeää suurten datamäärien käsittelyssä.
Katso myös
- Python
re
-moduulin dokumentaatio: Viralliset dokumentit Pythonin säännöllisistä lausekkeista. - Regular-Expressions.info: Kattava opas säännöllisiin lausekkeisiin.
- Real Python -opastus regexistä: Todellisen maailman sovelluksia säännöllisistä lausekkeista Pythonissa.