2017-09-07 2 views
0

私のファイルには、ホスト名に変換したいIPアドレスが含まれています。 IPアドレスは最後の3オクテットを除いて同じです。たとえば:ホスト名に0を加えます

192.168.38.8 
192.168.38.9 
192.168.38.10 

私は最終オクテットで終わるホスト名とIPアドレスを代用するために、私のPythonスクリプトに次のコードを持っています。

hostname = re.sub('192.168.38.','Host-Name',lm.group(4)) 

この私に結果を与える:

​​

私は先行ゼロを持つように一桁のオクテットを取得するにはどうすればよいですか?望ましい出力は次のようになります。

Host-Name08 
Host-Name09 
Host-Name10 
+0

可能な複製0(ゼロ)?](https://stackoverflow.com/questions/733454/best-way-to-format-integer-as-string-with-leading-zeros) – Barmar

+0

理想的には、八重奏のサイズに応じて** ** ** **数字。 'Host-Name008' ... – RomanPerekhrest

+1

[先行ゼロの表示番号](https://stackoverflow.com/questions/134934/display-number-with-leading-zeros) – CDspace

答えて

0

re.subが正しく使用されていません。

documentation for re.subから、一致が見つかった場合に文字列を返す文字列または置換関数を渡すことができます。

お知らせ: あなたはパッド一桁に 重複フラグの質問に対する回答のメソッドのいずれかを使用することができます。

def replace_ip(match): 
    last_octet = match.group(1) 

    return "".join((
     'Host-Name', 
     last_octet.zfill(2) 
    )) 


re.sub(r'192.168.38.(\d+)', replace_ip, ips_from_file) 
+0

@ Oluwafemi Suleの可能な複製 - 完全に機能しました。ありがとうございました。 – teamg

0

次のようにあなただけのsplit()を使用して簡単に見つけるかもしれない:

for ip_addr in ["192.168.38.8", "192.168.38.9", "192.168.38.10"]: 
    print "Host-Name{:02}".format(int(ip_addr.split('.')[3])) 

これはあなたを与えるだろう:

Host-Name08 
Host-Name09 
Host-Name10 
大手で文字列として整数をフォーマットする[最善の方法の
関連する問題