【问题标题】:Best way to use split and strip使用拆分和剥离的最佳方式
【发布时间】:2016-12-20 23:09:55
【问题描述】:

我的函数从我的服务器中获取命令并输出类似于offset=1.3682 的内容,metrics_emit 使用这些内容发送到我们的指标收集器/可视化器 datadog。

我需要做的是去掉offset= 部分,因为metrics_emit 只需要数值。剥离offset= 以及在i 上调用strip() 以消除所有换行符和尾随/前导空格的最佳方法是什么?

def check(self):
    output = sh.ntpq("-nc rv")
    out_list = output.split(",")
    for i in out_list:
        if "offset" in i:
            self.metrics_emit('ntp.offset', i)
            break

【问题讨论】:

  • offset=([^\s]+) 的正则表达式?

标签: python split strip


【解决方案1】:

直截了当的方法是:

i.strip().split('offset=')[1]

例如:

def scrape(line):
    return line.strip().split('offset=')[1]

例子:

>>> scrape('offset=1.3682')
'1.3682'

您是否需要转换输出。

【讨论】:

    【解决方案2】:

    如何提取出现在offset=之后的数值?

    import re
    regex = re.compile('offset=([\d+\.\d+]+)')
    string = 'offset=1.3682'
    
    match = re.search(regex, string)
    if match:
        print(match.group(0)) # prints - offset=1.3682
        print(match.group(1)) # prints - 1.3682
    

    为什么我更喜欢正则表达式?因为即使字符串中包含其他关键字,正则表达式也会提取出现在offset=表达式之后的数值。例如,使用我给定的示例检查以下情况。

    string = 'welcome to offset=1.3682 Stackoverflow'
    string = 'offset=abcd'
    

    如何删除前导和尾随空白字符?

    string.strip()
    

    将删除所有前导和尾随空白字符,例如\n、\r、\t、\f、空格。

    为了获得更大的灵活性,请使用以下

    • 仅删除 前导 空白字符:myString.lstrip()
    • 仅删除 尾随 空白字符:myString.rstrip()
    • 删除特定空白字符:myString.strip('\n')myString.lstrip('\n\r')myString.rstrip('\n\t') 等等。

    参考:请参阅此 SO answer

    【讨论】:

      【解决方案3】:

      .strip() 用于删除空白字符。

      .replace('offset=', '') 用于删除该字符串。

      你应该也可以将它们链接起来。

      【讨论】:

      • 那么OP如何获取offset=之后的数值部分?
      • string = 'offset=1.3682' --> string.replace('offset=', '').strip() --> '1.3682',你可以用float()来翻译吗? .replace()strip() 返回新字符串...
      • 否决我的答案并编辑我的部分答案,以便您获得更多曝光。不错,我喜欢。
      • 我闻到有东西在燃烧,顺便说一句,我的答案离你很远。我没有说你的答案是错误的,但不足以在所有情况下都通过。
      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2013-12-28
      • 2012-09-01
      • 2010-10-04
      • 2012-09-05
      • 1970-01-01
      • 2011-01-07
      相关资源
      最近更新 更多