Corso
Se vuoi seguire il nostro corso gratuito Intro to R, ecco il link.
Estrazione di valori numerici dalle stringhe
Estrarre numeri dalle stringhe è un’attività comune, in particolare quando si lavora con dati non strutturati o file di log.
Supponiamo di avere la seguente stringa: 'the recipe calls for 6 strawberries and 2 bananas'.
Sarebbe utile estrarre il 6 e il 2 da questa stringa per salvarli e usarli in seguito quando si confrontano i rapporti tra fragole e banane.
Quando usi un’espressione regolare per estrarre più numeri (o, più precisamente, più corrispondenze del pattern), puoi usare la funzione re.findall(). Dan non ne ha parlato nel video, ma è semplice da usare: passi un pattern e una stringa a re.findall() e restituirà un elenco delle corrispondenze.
Istruzioni
- Importa
re. - Scrivi un pattern che trovi tutti i numeri nella seguente stringa:
'the recipe calls for 10 strawberries and 1 banana'. Per farlo:- Usa la funzione
re.findall()e passale due argomenti: il pattern, seguito dalla stringa. \dè il pattern necessario per trovare le cifre. Va seguito da un+così che l’elemento precedente venga fatto combaciare una o più volte. Questo assicura che10sia considerato un numero unico e non come1e0.
- Usa la funzione
- Stampa le corrispondenze per confermare che la tua espressione regolare abbia trovato i valori
10e1.
# Import the regular expression module
____
# Find the numeric values: matches
matches = re.findall('____', '____')
# Print the matches
print(____)
# Import the regular expression module
import re
# Find the numeric values: matches
matches = re.findall('\d+', 'the recipe calls for 10 strawberries and 1 banana')
# Print the matches
print(matches)
Ex().test_import('re')
Ex().test_correct(test_object('matches'), test_function('re.findall'))
Ex().test_function('print')
success_msg('Excellent work - your regular expression successfully extracted the numeric values 10 and 1 from the string!')
- Usa il comando
import xper importare il modulox. - Il primo argomento di
re.findall()dovrebbe essere\d+e il secondo argomento dovrebbe essere la stringa:'the recipe calls for 10 strawberries and 1 banana'. - Usa la funzione
print()fornita per stamparematches.
Se tutto ti è chiaro, prosegui con l’esercizio successivo! In caso contrario, ecco un video panoramico.
Video panoramico sull’uso delle espressioni regolari per pulire le stringhe in Python
Corrispondenza di pattern
In questo esercizio continuerai a fare pratica con le espressioni regolari. Per ciascuna stringa fornita, il tuo compito è scrivere il pattern appropriato per farla combaciare.
Istruzioni
- Scrivi pattern per far combaciare:
- Un numero di telefono nel formato
xxx-xxx-xxxx. Lo hai già fatto in un esercizio precedente. - Una stringa nel formato: un simbolo del dollaro, un numero arbitrario di cifre, un punto decimale, 2 cifre.
- Usa
\$per far combaciare il simbolo del dollaro,\d*per far combaciare un numero arbitrario di cifre,\.per far combaciare il punto decimale e\d{x}per far combaciarexcifre.
- Usa
- Un numero di telefono nel formato
- Una lettera maiuscola, seguita da un numero arbitrario di caratteri alfanumerici.
- Usa
[A-Z]per far combaciare qualsiasi lettera maiuscola, seguita da\w*per far combaciare un numero arbitrario di caratteri alfanumerici.
- Usa
import re
# Write the first pattern
pattern1 = bool(re.match(pattern='____', string='123-456-7890'))
print(pattern1)
# Write the second pattern
pattern2 = bool(re.match(pattern='____', string='$123.45'))
print(pattern2)
# Write the third pattern
pattern3 = bool(re.match(pattern='____', string='Australia'))
print(pattern3)
# Write the first pattern
pattern1 = bool(re.match(pattern='\d{3}-\d{3}-\d{4}', string='123-456-7890'))
print(pattern1)
# Write the second pattern
pattern2 = bool(re.match(pattern='\$\d*\.\d{2}', string='$123.45'))
print(pattern2)
# Write the third pattern
pattern3 = bool(re.match(pattern='[A-Z]\w*', string='Australia'))
print(pattern3)
Ex().test_correct(test_object('pattern1'), test_function('re.match', index=1))
Ex().test_function('print', index=1)
Ex().test_correct(test_object('pattern2'), test_function('re.match', index=2))
Ex().test_function('print', index=2)
Ex().test_correct(test_object('pattern3'), test_function('re.match', index=3))
Ex().test_function('print', index=3)
success_msg("Great work! You're mastering the fundamentals of writing regular expressions!")
- Ci sono tre componenti nel primo pattern che la tua espressione regolare deve far combaciare:
xxx,xxxexxxx. I primi due sono fatti combaciare da\d{3}, mentre l’ultimo è fatto combaciare da\d{4}. Ognuno di questi componenti deve essere separato da un-.
Se vuoi approfondire con questo corso, ecco il link.
Dai un’occhiata al tutorial sulle stringhe in Python di DataCamp.

