从字符串中间提取一个double,不能使用replace

时间:2013-05-05 18:16:01

标签: python regex caching

我正在尝试测试缓存,我需要从输出中提取信息。

我的代码如下:

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("[^0123456789\.]","",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..

所以我认为我需要另一种方法来用正则表达式来解析它。

也许只是寻找#并解析数字或双数?我不知道该怎么做,不过......

2 个答案:

答案 0 :(得分:1)

您必须更具体地选择您想要的部分:

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

假设总有一个“#”字符

答案 1 :(得分:0)

这个正则表达式怎么样:

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