在Python中验证IP字符串是否大于或小于另一个IP字符串

1 投票
3 回答
2819 浏览
提问于 2025-04-28 03:37

在这段示例代码中,我输入一个起始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

撰写回答