CIDR形式のIPアドレス(つまり、1.1.1.0/32または10.0.0.1/24)を取得し、IPを3つの部分に分割するPythonスクリプトを作成しています:最初の3つのオクテット(1.1.1)、最後のオクテットオクテット (0) とサブネット マスク (32)。IP は可変長になるため、ある種の文字列文字カウンターを使用できるかどうかはわかりません。
何か案は?
ありがとう
CIDR形式のIPアドレス(つまり、1.1.1.0/32または10.0.0.1/24)を取得し、IPを3つの部分に分割するPythonスクリプトを作成しています:最初の3つのオクテット(1.1.1)、最後のオクテットオクテット (0) とサブネット マスク (32)。IP は可変長になるため、ある種の文字列文字カウンターを使用できるかどうかはわかりません。
何か案は?
ありがとう
IP を int に解析し、ビット単位の演算子を使用して取得します。
別の方法は、ipaddr-pyなどのライブラリを使用することです。個人的には図書館の方がいいです。
正規表現を使用:
#!/usr/bin/python
import re
def extractIP( ipStr):
l = re.split('(.*)\.(.*)\.(.*)\.(.*)/(.*)', ipStr)
return l[1:-1]
print extractIP("1.2.3.45/35")
この状況では、正規表現を使用するのは簡単です。
(\d{,3}\.\d{,3}\.\d{,3})\.(\d{,3})\/(\d+)
re.match
メソッドを組み合わせて使用すると、結果が得られます。
正規表現を使用します。r'.' を使用して、すべてのオクテットをリストに分割できます。そして、それらを好きな順序で再結合します。より複雑な re を一筆で書くこともできますが、それは少し難しいと思います。
import re
ip = '1.1.1.1/32'
re.split(r'(\.|/)', ip)