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

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


缩写规则:如果从0开始的零件需要从零件中删除,或者存在例如0000需要将其更改为0
缩写后的上一个示例:

['fcef:b0e7:7d20:0:0:0:3b95:565']

最佳答案

您应该使用标准库中的ipaddress模块:

>>> 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

>>> 'fcef:b0e7:7d20:0000:0000:0000:3b95:0565'.replace('0000', '0')
'fcef:b0e7:7d20:0:0:0:3b95:0565'

关于python - 缩写IPv6地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29107652/

10-12 23:50