2010-05-10 124 views
1

我想解析一些数据,并开始阅读正则表达式,所以我对它很新颖。这是我到目前为止的代码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] 

我所试图做的是做的是去除氧气数据(235.78),并使用正则表达式搜索把它放在自己的变量。我意识到应该有一个简单的解决方案,但我想弄清楚正则表达式是如何工作的,它们让我的头部受伤。谢谢你的帮助

Richard

+1

'String'在Python中是一个有效但易混淆的变量名。 – msw 2010-05-10 15:49:35

回答

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

什么?

print String.split()[4] 
+0

确保我没有收到数据垃圾。如果没有匹配,我可以用其他方式处理它 – Richard 2010-05-10 15:33:01

+0

因此,请确保元素'[3]'等于'氧气:'。 – 2010-05-10 15:39:18

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

nit-pick:'r'Oxygen:\ s *(\ d +(\。\ d +)?)''更容易碰到意外的输入,因为它不需要'Oxygen:'和值之间的空格,将接受整数和实数。 “在你接受的内容中保持自由”--Jon Postel – msw 2010-05-10 15:47:32

0

对于这样一个名单的一般分析可以

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

我想和大家分享我的?这是一个电子邮件?正则表达式,只是为了激励你。 :)

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