2010-05-10 165 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