2024-09-28 05:22:05 发布
网友
有一个具有IP地址的阵列。我需要一个选定的IP地址来缩短。例如:
['fcef:b0e7:7d20:0000:0000:0000:3b95:0565']
缩写规则:如果一个以0开头的部分需要从part删除,或者存在0000需要将其更改为0。 缩写后的上一个示例:
0000
0
您可以在join中使用生成器表达式,如下所示:
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'而不是{}!在
i == '0000'
您应该使用标准库中的^{}模块:
>>> 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:
replace
您可以在
join
中使用生成器表达式,如下所示:或者正如@J.F.Sebastian在评论中提到的那样,您可以使用}!在
^{pr2}$i == '0000'
而不是{您应该使用标准库中的^{} 模块:
这缩短了实际规则下的ip。在
要仅使用您引用的规则缩短ip,只需使用
^{pr2}$replace
:相关问题 更多 >
编程相关推荐