16

我想从不同长度的变量中提取最后两个字段值。例如,考虑以下三个值:

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

ff02::1:ff1f:fb6

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

这三行是可变长度的。如果我用分隔符分割每一行,我只想提取最后两个字段值:

也就是说,从三行中,我想要:

7d11, 1c7e

ff1f, fb6

ff1f, fb6

这可以使用split()吗?我没有任何想法。

4

2 回答 2

27

如果s是包含 IPv6 地址的字符串,请使用

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

得到最后两个组件。该split()方法将返回所有组件的列表,并且[-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 回答