Esercitarsi con le espressioni regolari: re.split() e re.findall()
Ora hai l'occasione di scrivere alcune espressioni regolari per trovare cifre, stringhe e caratteri non alfanumerici. Prima dai un'occhiata a my_string stampandola nella IPython Shell, così da capire come agganciare al meglio i vari passaggi.
Nota: è importante anteporre r ai tuoi pattern regex per assicurarti che vengano interpretati come desideri. Altrimenti potresti incontrare problemi con le sequenze di escape nelle stringhe. Per esempio, in Python "\n" indica un a capo, ma se usi il prefisso r, verrà interpretato come stringa grezza "\n", cioè il carattere "\" seguito dal carattere "n", e non come un a capo.
Il modulo per le espressioni regolari re è già stato importato per te.
Ricorda dal video che la sintassi della libreria regex prevede di passare sempre prima il pattern e poi la stringa.
Questo esercizio fa parte del corso
Introduzione al Natural Language Processing in Python
Istruzioni dell'esercizio
- Suddividi
my_stringalla fine di ogni frase. Per farlo:- Scrivi un pattern chiamato
sentence_endingsper intercettare le chiusure di frase (.?!). - Usa
re.split()per divideremy_stringin base al pattern e stampa il risultato.
- Scrivi un pattern chiamato
- Trova e stampa tutte le parole con l'iniziale maiuscola in
my_stringscrivendo un pattern chiamatocapitalized_wordse usandore.findall().- Ricordi il pattern
[a-z]mostrato nel video per trovare gruppi di minuscole? Modificalo in modo opportuno per trovare gruppi di maiuscole.
- Ricordi il pattern
- Scrivi un pattern chiamato
spacesper intercettare uno o più spazi ("\s+") e poi usare.split()per divideremy_stringin base a questo pattern, mantenendo intatta tutta la punteggiatura. Stampa il risultato. - Trova tutte le cifre in
my_stringscrivendo un pattern chiamatodigits("\d+") e usandore.findall(). Stampa il risultato.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Write a pattern to match sentence endings: sentence_endings
sentence_endings = r"[___]"
# Split my_string on sentence endings and print the result
print(re.____(____, ____))
# Find all capitalized words in my_string and print the result
capitalized_words = r"[___]\w+"
print(re.____(____, ____))
# Split my_string on spaces and print the result
spaces = r"___"
print(re.____(____, ____))
# Find all digits in my_string and print the result
digits = r"___"
print(re.____(____, ____))