Bonjour à tous,

Je sollicite votre aide pour le traitement d'un fichier de données par l'utilisation d'expression régulières.

Mes données sont le forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
43-43-14P52N1-17-08P22W;07/02/11-10:30:03;XXX;0;560
la partie XXX pouvant prendre les valeurs : P, HPE, HPH, HCE, HCH

J'ai écris l'expression régulière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
pat1 = re.compile('''\d\d-\d\d-\d\dP\d\d[A-Z]\d-\d\d-\d\dP\d\d[A-Z];
                \d\d/\d\d/\d\d-\d\d:\d\d:\d\d;
                (P|HPE|HPH|HCE|HCH);
                [0-9]+;
                [0-9]{1,9}''',re.VERBOSE)
qui fonctionne bien mais qui MATCH avec les données suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
43-44-33P64N1-18-17P79W;19/03/11-04:30:05;HCH;0;206KH
43-44-33P64N1-18-17P79W;19/03/11-12:00:07;HPH;0;194E7O8Z
43-44-33P64N1-18-17P79W;20/03/11-07:30:03;HCH;0;214JWH _5OX<ZE(_S 0CVAPH
je ne comprends pas pourquoi ?

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pat1 = re.compile('''\d\d-\d\d-\d\dP\d\d[A-Z]\d-\d\d-\d\dP\d\d[A-Z];
                \d\d/\d\d/\d\d-\d\d:\d\d:\d\d;
                (P|HPE|HPH|HCE|HCH);
                [0-9]+;
                [0-9]{1,9}''',re.VERBOSE)
 
#
with open(repOri+'tic.csv') as fichier :
    listTicOk = []
    listTicNok = []
    for line in fichier :
        if re.match(pat1, line):
            listTicOk.append(line)
        else:
            listTicNok.append(line)
Merci de votre aide