16

さまざまな長さの変数から最後の2つのフィールド値を抽出したいと思います。たとえば、次の3つの値について考えてみます。

fe80::e590:1001:7d11:1c7e

ff02::1:ff1f:fb6

fe80::7cbe:e61:f5ab:e62 ff02::1:ff1f:fb6

これらの3行は可変長です。各行を区切り文字で分割した場合、最後の2つのフィールド値のみを抽出したい:

つまり、3行から、次のようにします。

7d11, 1c7e

ff1f, fb6

ff1f, fb6

これはを使用して行うことができますsplit()か?私は何のアイデアも得ていません。

4

2 に答える 2

27

がIPv6アドレスを含む文字列の場合sは、

s.split(":")[-2:]

最後の2つのコンポーネントを取得します。このsplit()メソッドはすべてのコンポーネントの[-2:]リストを返し、このリストをスライスして最後の2つの要素のみを返します。

于 2012-05-31T16:55:45.563 に答える
19

str.rsplit()右から分割するために使用できます。

>>> ipaddress = 'fe80::e590:1001:7d11:1c7e'
>>> ipaddress.rsplit(':', 2) # splits at most 2 times from the right
['fe80::e590:1001', '7d11', '1c7e']

これにより、アドレスの最初の部分が不必要に分割されるのを防ぎます。

于 2012-05-31T17:06:28.147 に答える