[英]Remove leading zeros in IP address using Python
ip = "100.020.003.400"
print '.'.join(str(int(part)) for part in ip.split('.'))
# 100.20.3.400
使用netaddr中库 ,然后它有ZEROFILL
标志:
import netaddr
ip = "055.023.156.008"
no_zero_ip = netaddr.IPAddress(ip, flags=netaddr.ZEROFILL).ipv4()
# IPAddress('55.23.156.8')
如果您不想要IPAddress
类型,您可能希望将no_zero_ip
结果更改为字符串或其他内容
对于2.6之前的版本,您可以使用string-modulo运算符。 但是我们不要谈论这个问题。
这应该在引入format
方法时做到(2.6):
'.'.join('{0}'.format(int(i)) for i in ip.split('.'))
可选择消除python≥3.3或≥2.7的索引(我认为):
'.'.join('{}'.format(int(i)) for i in ip.split('.'))
而对于python≥3.6,我们得到f-string up:
'.'.join(f'{int(i)}' for i in ip.split('.'))
如果你可以使用最后一个,我强烈推荐它。 这非常令人满意。
使用捕获组匹配最后一个数字并复制它,以防止替换所有数字。
ip = re.sub(r'\b0+(\d)', r'\1', ip_with_zeroes)
你可以用“。”拆分。 转换为整数,然后转换为字符串,并通过“。”连接。
ip = ".".join([str(int(i)) for i in ip.split(".")])
在Python 3.3+上执行此操作的最简单方法是使用内置ipaddress
模块
import ipaddress
print(str(ipaddress.ip_address("127.000.000.1")))
将打印
127.0.0.1
但请注意,您将在无效的IP地址上获得ValueError
异常。 好的部分是这也适用于IPv6地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.