Probleme re

Le
Alain BARTHE
J'ai un problème dans l'utilisation du module re.

Je voudrais isoler plusieurs champs contenus dans des lignes successives
d'un fichier (ou d'une chaine multilignes).

Par exemple :

data = """annee 08
mois
jour
"""

J'ai essaye :

exp = re.compile ("annee=(d+)$mois=(d+)$jour=(d+)", re.MULTILINE)

res = exp.match (data)

if res: print res.groups()

Mais ça ne fonctionne pas.

Apparemment je n'ai pas compris comment gérer les multi-lignes, et
représenter le saut de ligne dans le pattern.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #16457751
n permet de matcher le saut de ligne

ju.
Alain BARTHE
Le #16458001
JB a écrit :
n permet de matcher le saut de ligne

ju.



Merci pour ton aide.

J'avais déjà essayé le n, mais mon problème provenait d'un mélange
entre re.MULTILINE, re.VERBOSE et l'oubli du r""".

L'exemple était volontairement simplifié, en fait la chaine à analyser
était :

adt7463-i2c-1-2c
V1.5: +2.627 V (min = +0.00 V, max = +3.32 V)
VCore: +1.310 V (min = +0.00 V, max = +2.99 V)
V3.3: +3.339 V (min = +0.00 V, max = +4.38 V)
V5: +5.052 V (min = +0.00 V, max = +6.64 V)
V12: +12.031 V (min = +0.00 V, max = +15.94 V)
CPU_Fan: 11368 RPM (min = 0 RPM)
fan2: 11273 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
CPU Temp: +37.75°C (low = -127°C, high = +127°C)
Board Temp:
+45.50°C (low = -127°C, high = +127°C)
Remote Temp:
+38.75°C (low = -127°C, high = +127°C)
CPU_PWM: 64
Fan2_PWM: 64
Fan3_PWM: 64
vid: +1.550 V (VRM Version 2.4)


Je cherchais à relire les valeurs des 3 températures (CPU, board et remote).

J'y suis finalement arrivé avec le code ci-dessous :

exp = re.compile (r"""
CPUsTemp:
s*([+-]?d+.?d*)
.*n
BoardsTemp:
n
s*([+-]?d+.?d*)
.*n
RemotesTemp:
n
s*([+-]?d+.?d*)
""", re.VERBOSE + re.MULTILINE)

print exp.search (data, re.MULTILINE).groups()

Merci encore
Publicité
Poster une réponse
Anonyme