代码之家  ›  专栏  ›  技术社区  ›  davidmytton

在Python中从字符串中提取负载平均浮点值的最佳方法是什么?

  •  1
  • davidmytton  · 技术社区  · 17 年前

    “17:31:51上134天,11:26,1个用户,平均负载:0.22,0.15,0.10”

    最后提取x3负载平均值的最佳方法是什么?我写了一个正则表达式来实现这一点,但这是最有效/最快的方法吗?

    >>> s = "17:31:51 up 134 days, 11:26,  1 user,  load average: 0.22, 0.15, 0.10"
    >>> print re.findall(r"([0-9]\.\d+)", s)
    ['0.22', '0.15', '0.10']
    
    6 回复  |  直到 17 年前
        1
  •  5
  •   Adam Rosenfield    17 年前

    这应该奏效:

    # s is the string to parse
    loadavg = [float(x) for x in s.rsplit('load average: ', 1)[1].split(', ')]
    
        2
  •  5
  •   Jaime Soriano    17 年前

    /proc/loadavg 特殊文件,因此您可以执行以下操作:

    >>> open("/proc/loadavg").readline().split(" ")[:3]
    
        3
  •  4
  •   Josh    12 年前

    import os
    os.getloadavg()
    
        4
  •  0
  •   dF.    17 年前

    >>> print s.split(': ')[1].split(', ')
    ['0.22', '0.15', '0.10']
    
        5
  •  0
  •   David Z    17 年前

    我肯定会使用正则表达式。你也许可以先打个电话来提高效率 s.find('load average')

        6
  •  0
  •   PEZ    17 年前

    正则表达式是一种方法。但也许更有力:

    re.search(r"load average: (\d+.\d\d), (\d+.\d\d), (\d+.\d\d)$", s).groups()
    

    除非你经常在一个紧密的循环中这样做,否则你不必担心性能。清晰度是最重要的。在这里,我想说这个正则表达式很难被击败。