[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
57 vues24 pages

Expressions régulières en Python: Cours 6

Le document décrit diverses fonctionnalités des expressions régulières en Python, notamment la mémorisation de modèles, les groupes, les drapeaux d'options et les opérations de recherche, de substitution et de regroupement.

Transféré par

Ousmane Maïga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
57 vues24 pages

Expressions régulières en Python: Cours 6

Le document décrit diverses fonctionnalités des expressions régulières en Python, notamment la mémorisation de modèles, les groupes, les drapeaux d'options et les opérations de recherche, de substitution et de regroupement.

Transféré par

Ousmane Maïga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 24

Programmation PYTHON

Cours 6

Nassim ZELLAL
2019/2020
Expressions régulières - 2
La mémorisation de modèle - référence arrière

Les parenthèses () : mémorisation (référence arrière).


 ligne="eleve3 au poste3"
 if re.search("(\d).+poste\\1",ligne):
#on peut ajouter le préfixe « r » et écrire (r"(\d).+poste\1",ligne):

 print("ok")
 #----------------------------------------------------------#
 ligne="eleve3 au poste5"
 if re.search("(\d).+poste\\1",ligne):
#on peut ajouter le préfixe « r » et écrire (r"(\d).+poste\1",ligne):

 print("ok")
La mémorisation de modèle - group()

 Les parenthèses () s’utilisent avec la méthode


group() pour extraire la sous-chaîne de
caractères placée entre ces parenthèses.
 import re
 ligne="eleve3 au poste5"
 x=re.search("(.+)(\d)(.+)(po(.+))(\d)",ligne)
 print(x.group(6)+" "+x.group(5)+" "+x.group(4)+"
"+x.group(3)+" "+x.group(2)+" "+x.group(1))
La mémorisation de modèle - group()
La mémorisation de modèle - groups()

 La méthode groups() retourne un tuple


contenant tous les sous-groupes reconnus par
l’expression régulière.

 import re
 m = re.match("(\d+)\.(\d+)", "24.1632")
 #il n’est pas nécessaire de déspécialiser le point (\.)
dans cet exemple
 print(m.groups())
La mémorisation de modèle - groups()
Expressions régulières - regroupement

 import re,sys
 var=open(sys.argv[1],'r')
 res=var.readlines()
 for i in range(len(res)):
 if re.search(r"\b(homme|femme)\b",res[i]):
 print(res[i],end="")
 var.close()
Expressions régulières - flags (arguments optionnels)

 re.I : recherche insensible à la casse.


 re.S : traiter la chaîne comme une ligne simple.
(avec l’argument optionnel re.S, le caractère .
reconnaît aussi les sauts de ligne).
Expressions régulières - flags (arguments optionnels)

 import sys,re
Extraction des sauts de ligne
 var=open(sys.argv[1],'r') précédés d’un point
 var2=open("res.txt",'w') d’exclamation.
 a=1
 for i in var.readlines():
 x=re.search("!(.$)",i,re.S)
 if x!=None :#éviter les objets de type "None" (NoneType
object) /ou bien if x:
 var2.write("Ligne "+str(a)+" résultat : "+x.group(1))
a+=1 Un objet "None" est incompatible
avec la méthode group().
Expressions régulières - flags (arguments optionnels)
Expressions régulières - flags (arguments optionnels)

 import sys,re
 var=open(sys.argv[1],'r')
 var2=open("res.txt",'w')
 for i in var.readlines():
 x=re.search("(chocolat)",i,re.I)
 if x:#éviter les objets de type "None"
 var2.write("Résultat : "+x.group(1)+"\n")
Expressions régulières - flags (arguments optionnels)
Expressions régulières - flags (arguments optionnels)

 import sys,re
 var=open(sys.argv[1],'r')
 var2=open("res.txt",'w')
 for i in var.readlines():
 x=re.findall("chocolat",i,re.I)
 for c in x:
 var2.write("Résultat : "+c+"\n")
Expressions régulières - flags (arguments optionnels)
Expressions régulières - substitution
import sys,re
var=open(sys.argv[1],'r')
var2=open("res.txt",'w')
for i in var.readlines():
x=re.sub("chocolat","pain",i,flags=re.I)
var2.write(x)

#Avec sub() on doit écrire « flags » avant un flag.


Expressions régulières - substitution
Expressions régulières - look-around

 (?=expression) regarde-devant positif (look ahead)

 (?!expression) regarde-devant négatif (look ahead)

 (?<=expression) regarde-derrière positif (look


behind)

 (?<!expression) regarde-derrière négatif (look


behind)
Expressions régulières - look-around
 import re
 x = "J'ai mangé le croissantqui était sur la table"
 y = "I catch the red fly"
Il y a une tabulation ici.
 z = "Je m'appelle Tom-cat "
 xx=re.search("(croissant)(?!\s)",x)
 print(xx.group(1)) # reconnaît croissant
 yy=re.search("(?<=\t)(.+)",y)
 print(yy.group(1)) #reconnaît 'fly'
 zz=re.search("(?<=-)(cat)(?=\s)",z)
 print(zz.group(1))# reconnaît 'cat' dans 'Tom-cat'
Exercice 1
 Modifier le script ci-dessous (slide 12), afin qu'il
puisse extraire tous les sauts de ligne du fichier
« flags.txt ».
 import sys,re
 var=open(sys.argv[1],'r')
 var2=open("res.txt",'w')
 a=1
 for i in var.readlines():
 x=re.search("!(.$)",i,re.S)
 if x:
 var2.write("Ligne "+str(a)+" résultat :
"+x.group(1))
a+=1
Exercice 2
 Modifier le script ci-dessous (slide 16), afin qu'il
puisse extraire toutes les occurrences de
« chocolat » du fichier « flags.txt » sans utiliser les
2 boucles for.
 import sys,re
 var=open(sys.argv[1],'r')
 var2=open("res.txt",'w')
 res=var.readlines()
 for i in res:
 x=re.findall("chocolat",i,re.I)
 for c in x:
 var2.write("Résultat : "+c+"\n")
Exercice 3
 1/ Faire un script qui prend en entrée "text-b.txt"
encodé en UTF-8 du cours 6;
 2/ Trier les tokens par ordre alphabétique
décroissant et afficher ce tri dans un fichier;
 3/ Afficher dans un autre fichier :
 3.1/ le nombre de tokens;
 3.2/ les phrases exclamatives;
 3.3/ les phrases interrogatives;
 3.4/ afficher toutes les occurrences du token
« homme » qui sont suivies d’un verbe ;

Vous aimerez peut-être aussi