从split中提取最后两个字段

lea*_*ner 14 python

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

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

ff02::1:ff1f:fb6

fe80::7cbe:e61:f5ab:e62 ff02::1:ff1f:fb6
Run Code Online (Sandbox Code Playgroud)

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

也就是说,从三行开始,我想:

7d11, 1c7e

ff1f, fb6

ff1f, fb6
Run Code Online (Sandbox Code Playgroud)

这可以用split()吗?我没有得到任何想法.

Sve*_*ach 24

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

s.split(":")[-2:]
Run Code Online (Sandbox Code Playgroud)

获得最后两个组件.该split()方法将返回所有组件的列表,并且[-2:]将对此列表进行切片以仅返回最后两个元素.

  • @ user1411416你可以使用`':'.join()` (2认同)

Mat*_*att 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']
Run Code Online (Sandbox Code Playgroud)

这避免了不必要地分割地址的第一部分.

  • @JoelCornett我认为无论多么微小,我总是很好地消除不必要的计算. (2认同)