有一个带有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/