要区分IPv4和IPv6的字符串地址,可以使用以下函数:
import socket
def get_ip_address_type(ip_str):
try:
# 尝试将字符串解析为IPv4地址
socket.inet_pton(socket.AF_INET, ip_str)
return "IPv4"
except OSError:
pass
try:
# 尝试将字符串解析为IPv6地址
socket.inet_pton(socket.AF_INET6, ip_str)
return "IPv6"
except OSError:
pass
# 如果都无法解析,则返回未知类型
return "Unknown"
# 测试示例
ipv4_address = "192.168.0.1"
ipv6_address = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
print(get_ip_address_type(ipv4_address)) # 输出:IPv4
print(get_ip_address_type(ipv6_address)) # 输出:IPv6
该函数使用了Python的socket
库来进行IP地址解析。首先,尝试将字符串解析为IPv4地址,如果成功则返回”IPv4”;否则,再尝试将字符串解析为IPv6地址,如果成功则返回”IPv6”。如果都无法解析,则返回”Unknown”表示未知类型。
你可以根据需要修改或整合这个函数来适应你的程序。
内容由零声教学AI助手提供,问题来源于学员提问