缩写IPv6地址

2024-09-28 05:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个具有IP地址的阵列。我需要一个选定的IP地址来缩短。例如:

['fcef:b0e7:7d20:0000:0000:0000:3b95:0565']

缩写规则:如果一个以0开头的部分需要从part删除,或者存在0000需要将其更改为0。 缩写后的上一个示例:

^{pr2}$

Tags: 示例规则partpr2b0e7fcef
2条回答

您可以在join中使用生成器表达式,如下所示:

>>> ':'.join('0' if i.count('0')==4 else i.lstrip('0') for i in s.split(':'))
'fcef:b0e7:7d20:0:0:0:3b95:565'

或者正如@J.F.Sebastian在评论中提到的那样,您可以使用i == '0000'而不是{}!在

^{pr2}$

您应该使用标准库中的^{}模块:

>>> import ipaddress
>>> str(ipaddress.ip_address('fcef:b0e7:7d20:0000:0000:0000:3b95:0565'))
'fcef:b0e7:7d20::3b95:565'
>>> ip = ipaddress.ip_address('fcef:b0e7:7d20:0000:0000:0000:3b95:0565')
>>> ip.compressed
'fcef:b0e7:7d20::3b95:565'
>>> ip.exploded
'fcef:b0e7:7d20:0000:0000:0000:3b95:0565'

这缩短了实际规则下的ip。在

要仅使用您引用的规则缩短ip,只需使用replace

^{pr2}$

相关问题 更多 >

    热门问题