用python判断一个列表中的IP地址是有效还是无效,公有还是私有,并且打印出所有无效的IP地址,打印出有效的私有IP地址列表和公有IP地址列表。
时间: 2024-09-21 17:03:58 浏览: 70
在Python中,我们可以使用正则表达式库re
来验证IP地址的有效性和分类。首先,我们需要创建一个函数来检查IP地址是否有效,然后根据IP地址的范围判断其类别(私有或公有)。以下是一个简单的实现:
import re
def is_valid_ip(ip):
pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
return bool(re.match(pattern, ip))
def classify_ip(ip):
if is_valid_ip(ip):
# 私有IP地址范围
private_ranges = [(32, '10.0.0.0', '10.255.255.255'), (32, '172.16.0.0', '172.31.255.255'), (32, '192.168.0.0', '192.168.255.255')]
for start, prefix, end in private_ranges:
if start <= int(ip.split('.')[3]) <= end:
return '私有'
# 公有IP地址
else:
return '公有'
else:
return '无效'
def process_ips(ips):
valid_private_ips = []
valid_public_ips = []
invalid_ips = []
for ip in ips:
ip_type = classify_ip(ip)
if ip_type == '无效':
invalid_ips.append(ip)
elif ip_type == '私有':
valid_private_ips.append(ip)
else:
valid_public_ips.append(ip)
print(f"无效的IP地址: {invalid_ips}")
print(f"有效的私有IP地址: {valid_private_ips}")
print(f"有效的公有IP地址: {valid_public_ips}")
# 示例
ips_to_check = ['192.168.1.1', '172.16.1.1', '10.0.1.1', '256.256.256.256', '192.0.2.0'] # 包含一些示例IP地址
process_ips(ips_to_check)
在这个例子中,我们假设输入的是IPv4地址。运行上述代码会根据每个IP地址的合法性、私有性或公共性将其分类并分别打印出来。
相关推荐


















