2013-05-05 45 views
0

我想測試一個緩存,並且我需要從輸出中提取信息。從字符串中間提取一個double,不能用替換

我的代碼如下:

import re 

for line in open("test-fmath.simout_ruu_size_2"): 
    if "avg_alu_power " in line: 
     c = line 
     print c 
     c = re.sub("[^\.]","",c) 
     print c 

如果我這樣做,我的輸出是:

avg_alu_power    18.9412 # avg power usage of alu 

    18.9412 

這是正確的。但是,當我輸入具有數字和它時期,即:

il1.miss_rate    0.0612 # miss rate (i.e., misses/ref) 

    1.0.0612.. 

所以我想我需要另一種方式與正則表達式來解析它。

也許正在尋找一個#並解析它之前的數字或雙精度?我不知道該怎麼做,雖然...

+0

嘗試R = R 「[0-9 \。] *(*?)」 用的findall,完全不是那麼回事......不幸 – adsfdsafdsa 2013-05-05 18:22:11

回答

1

你必須要更具體的只選擇你想要的部分:

>>> re.search(r'([\d.]+)\s+#', text).group(1) 
'0.0612' 

假設總有一個「#」字符

+0

謝謝,非常完美。 – adsfdsafdsa 2013-05-05 19:14:12

0

這個怎麼樣的正則表達式:

re.match('.* ([0-9\.]*).*',line).groups() 
相關問題