0

CIDR形式のIPアドレス(つまり、1.1.1.0/32または10.0.0.1/24)を取得し、IPを3つの部分に分割するPythonスクリプトを作成しています:最初の3つのオクテット(1.1.1)、最後のオクテットオクテット (0) とサブネット マスク (32)。IP は可変長になるため、ある種の文字列文字カウンターを使用できるかどうかはわかりません。

何か案は?

ありがとう

4

6 に答える 6

3

IP を int に解析し、ビット単位の演算子を使用して取得します。

別の方法は、ipaddr-pyなどのライブラリを使用することです。個人的には図書館の方がいいです。

于 2013-03-28T15:18:14.297 に答える
3

正規表現を使用:

#!/usr/bin/python
import re


def extractIP( ipStr):

    l = re.split('(.*)\.(.*)\.(.*)\.(.*)/(.*)', ipStr)
    return l[1:-1]

print extractIP("1.2.3.45/35")
于 2013-03-28T15:22:58.187 に答える
0

この状況では、正規表現を使用するのは簡単です。

(\d{,3}\.\d{,3}\.\d{,3})\.(\d{,3})\/(\d+)

re.matchメソッドを組み合わせて使用​​すると、結果が得られます。

于 2013-03-28T15:25:55.273 に答える
0

正規表現を使用します。r'.' を使用して、すべてのオクテットをリストに分割できます。そして、それらを好きな順序で再結合します。より複雑な re を一筆で書くこともできますが、それは少し難しいと思います。

import re
ip = '1.1.1.1/32'
re.split(r'(\.|/)', ip)
于 2013-03-28T15:19:32.073 に答える