2010-05-10 11 views
1

J'essaye d'analyser certaines données et je viens de commencer à lire des expressions régulières, donc je suis assez nouveau pour cela. Ceci est le code que j'ai jusqu'à présentrecherche d'expression régulière en python

String = "MEASUREMENT 3835 303 Oxygen:  235.78 Saturation:  90.51 Temperature:  24.41 DPhase:  33.07 BPhase:  29.56 RPhase:  0.00 BAmp:  368.57 BPot:  18.00 RAmp:  0.00 RawTem.:   68.21" 
String = String.strip('\t\x11\x13') 

String = String.split("Oxygen:") 
print String[1] 
String[1].lstrip 
print String[1] 

Ce que je suis en train de faire est de faire est de retirer les données d'oxygène (235.78) et le mettre dans sa propre variable en utilisant une recherche d'expression régulière. Je me rends compte qu'il devrait y avoir une solution facile, mais j'essaie de comprendre comment les expressions régulières fonctionnent et me font mal à la tête. Merci pour toute aide

Richard

+1

'String' est un nom de variable valide mais source de confusion en Python. – msw

Répondre

1
import re 
string = "blabla Oxygen:  10.10 blabla" 
regex_oxygen = re.compile('''Oxygen:\W+([0-9.]*)''') 
result = re.findall(regex_oxygen,string) 
print result 
0

Pourquoi?

print String.split()[4] 
+0

Pour m'assurer que je ne reçois pas d'ordures pour les données. S'il n'y a pas de correspondance, je peux en traiter d'une autre manière. – Richard

+0

Ensuite, assurez-vous que l'élément '[3]' est égal à 'Oxygen:'. –

2
re.search(r"Oxygen: *([\d.]+)", String).group(1) 
+0

nit-pick: 'r'Oxygen: \ s * (\ d + (\. \ D +)?) '' Est plus susceptible de toucher une entrée inattendue car il ne nécessite pas d'espace entre 'Oxygen:' et la valeur et acceptera des entiers ainsi que des réels. "Soyez libéral dans ce que vous acceptez" -Jon Postel – msw

0

Pour l'analyse générale des listes comme celui-ci pourrait

import re 
String = "MEASUREMENT 3835 303 Oxygen:  235.78 Saturation:  90.51" 
String = String.replace(':','') 
value_list=re.split("MEASUREMENT\W+[0-9]+\W+[0-9]+\W",String)[1].rstrip().split() 
values = dict(zip(value_list[::2],map(float,value_list[1::2]))) 
-1

Je voudrais partager mon? Est-ce un e-mail? expresion regex, juste pour vous inspirer. :)

9 emailregex = "^[a-zA-Z.a-zA-Z][email protected]$" 
10 
11 def validateEmail(email): 
12   """returns 1 if is an email, 0 if not """ 
13   # len([email protected]) = 17 
14   if len(email)>=17: 
15     if re.match(emailregex,email)!= None: 
16       return 1 
17   return 0 
0

Je crois que la réponse à votre problème spécifique a été posté. Cependant je voulais vous montrer quelques ressources pour l'expression régulière de python. Le python documentation on regular expression est l'endroit où commencer. O'reilly a aussi many good books on the subject, que ce soit pour comprendre l'expression régulière en profondeur ou juste assez pour faire fonctionner les choses.

Enfin regular-expressions.info est une bonne ressource pour l'expression régulière parmi les langages grand public. Vous pouvez même tester votre expression régulière sur le site Web.

Questions connexes