Cours
Si vous souhaitez suivre notre cours gratuit Intro to R, voici le lien.
Extraire des valeurs numériques de chaînes
Extraire des nombres de chaînes est une tâche courante, en particulier avec des données non structurées ou des fichiers journaux.
Supposons que vous ayez la chaîne suivante : 'the recipe calls for 6 strawberries and 2 bananas'.
Il peut être utile d’extraire le 6 et le 2 de cette chaîne pour les réutiliser ensuite, par exemple pour comparer les proportions fraises/bananes.
Lorsque vous utilisez une expression régulière pour extraire plusieurs nombres (ou plus précisément, plusieurs correspondances de motif), vous pouvez employer la fonction re.findall(). Dan n’en a pas parlé dans la vidéo, mais son utilisation est simple : vous transmettez un motif et une chaîne à re.findall(), qui renvoie une liste des correspondances.
Consignes
- Importez
re. - Écrivez un motif qui trouve tous les nombres dans la chaîne suivante :
'the recipe calls for 10 strawberries and 1 banana'. Pour cela :- Utilisez la fonction
re.findall()avec deux arguments : le motif, puis la chaîne. \dest le motif pour trouver des chiffres. Ajoutez un+pour indiquer que l’élément précédent doit correspondre une ou plusieurs fois. Cela garantit que10est pris comme un seul nombre et non comme1et0.
- Utilisez la fonction
- Affichez les correspondances pour vérifier que votre expression régulière a bien trouvé les valeurs
10et1.
# 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!')
- Utilisez la commande
import xpour importer le modulex. - Le premier argument de
re.findall()doit être\d+, et le second la chaîne :'the recipe calls for 10 strawberries and 1 banana'. - Utilisez la fonction
print()fournie pour affichermatches.
Si tout est clair, passez à l’exercice suivant ! Sinon, voici une vidéo de synthèse.
Vidéo de synthèse : utiliser les expressions régulières pour nettoyer des chaînes en Python
Appariement de motifs
Dans cet exercice, vous allez continuer à pratiquer les expressions régulières. Pour chaque chaîne fournie, votre objectif est d’écrire le motif approprié pour la faire correspondre.
Consignes
- Écrivez des motifs pour faire correspondre :
- Un numéro de téléphone au format
xxx-xxx-xxxx. Vous l’avez déjà fait dans un exercice précédent. - Une chaîne au format : un signe dollar, un nombre arbitraire de chiffres, un point décimal, puis 2 chiffres.
- Utilisez
\$pour le signe dollar,\d*pour un nombre arbitraire de chiffres,\.pour le point décimal, et\d{x}pour faire correspondrexchiffres.
- Utilisez
- Un numéro de téléphone au format
- Une majuscule suivie d’un nombre arbitraire de caractères alphanumériques.
- Utilisez
[A-Z]pour n’importe quelle majuscule, suivi de\w*pour un nombre arbitraire de caractères alphanumériques.
- Utilisez
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!")
- Le premier motif doit comporter trois éléments :
xxx,xxxetxxxx. Les deux premiers se correspondent avec\d{3}, le dernier avec\d{4}. Chaque élément est séparé par un-.
Si vous souhaitez aller plus loin avec ce cours, voici le lien.
Découvrez le Python String Tutorial de DataCamp.