2016-12-20 4 views
1

私の機能は私のサーバをコマンドのためにスクラブし、offset=1.3682の行に沿って何かを出力します。metrics_emitはメトリクスコレクタ/ビジュアライザのdatadogに送信します。スプリットとストリップを使用する最良の方法

metrics_emitは数値が欲しいので、offset=の部分を削除する必要があります。 offset=を取り除く最も良い方法は、strip()iに呼び出して、すべての改行と末尾の/空白の空白を取り除くことです。

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 
+1

'offset =([^ \ s] +)'の正規表現ですか? –

答えて

-1

.strip()空白文字を削除します。

.replace('offset=', '')その文字列を削除します。

あなたもそれらをチェーンすることができます。

+0

次に、OPが 'offset ='の後に数値部分をどのように得るのでしょうか? 'float() 'を使用することができます: –

+0

' string =' offset = 1.3682'' - > 'string.replace( 'offset ='、 '').strip()' - ''1.3682'それを翻訳するには? '.replace()'と 'strip()'は新しい文字列を返します... – moogle

+0

私の答えを下げて、私の答えの一部を編集してください。いいね、気に入った。 – moogle

0

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.strip('\n')又はmyString.lstrip('\n\r')myString.rstrip()

  • 特定空白文字を削除:myString.lstrip()
  • のみ末尾の空白文字を削除:

    • 以下の使用より柔軟に

      のみ主要の空白文字を削除しますまたはmyString.rstrip('\n\t')など。

    参考:このSO answerを参照してください。

  • 1

    簡単な方法は次のとおりです。たとえば

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

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

    例:

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

    あなたは出力を変換する必要がある場合まで。

    関連する問題