在Python中验证IP字符串是否大于或小于另一个IP字符串
在这段示例代码中,我输入一个起始IP和一个结束IP。然后我会根据这两个IP创建一个IP池的列表。我想加一个验证,确保起始IP总是小于结束IP。
start_ip = '100.71.9.98'
end_ip = '100.71.9.100'
start_ip < end_ip
False
我该如何验证起始IP应该小于结束IP呢?
3 个回答
0
标准的 ipaddress 库(用于处理 IPv4 和 IPv6 地址的库)运行得非常顺利:
import ipaddress
if ipaddress.ip_address('192.0.2.1') < ipaddress.ip_address('192.0.2.2'):
...
2
如果你使用的是 Python 3.x,那么你可以用 ipaddress
这个标准库,它里面有专门处理 IP 地址的对象。这些对象可以进行比较,使用起来很方便。
import ipaddress
start = ipaddress.IPv4Address('100.71.9.98')
end = ipaddress.IPv4Address('100.71.9.100')
print(start < end)
# True
如果你在用 Python 2.7,可以使用 py2-ipaddress,不过功能会有所减少。
3
把这些字符串转换成一个整数的列表。
>>> start_ip = '100.71.9.98'
>>> end_ip = '100.71.9.100'
>>> map(int, start_ip.split('.')) # list(map(int, ...)) in Python 3.x
[100, 71, 9, 98]
>>> map(int, end_ip.split('.'))
[100, 71, 9, 100]
然后,你就可以按照你想要的方式进行比较了:
>>> '100.71.9.98' < '100.71.9.100'
False
>>> [100, 71, 9, 98] < [100, 71, 9, 100]
True
>>> map(int, start_ip.split('.')) < map(int, end_ip.split('.'))
True