📅  最后修改于: 2023-12-03 15:11:17.470000             🧑  作者: Mango
在网络应用程序开发中,处理 IP 地址是非常常见的任务。本文将介绍如何使用 Python 编写一个函数,用于检查给定字符串是 IPv4 或 IPv6 还是无效的。
IPv4 是 Internet 协议版本 4,是目前互联网中最常用的协议。IPv4 地址由 32 位二进制数组成,通常用点分十进制表示,例如 192.168.1.1。
IPv6 是 Internet 协议版本 6,是 IPv4 的后继者。IPv6 地址由 128 位二进制数组成,通常用冒号分隔的十六进制表示,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。
Python 内置了一个 ipaddress 模块,用于处理 IPv4 和 IPv6 地址,可以使用该模块中的函数快速地检查给定的字符串是 IPv4 还是 IPv6。
下面是一个简单的示例代码,用于检查给定的字符串是否是合法的 IPv4 或 IPv6 地址:
import ipaddress
def check_ip_address(ip):
try:
ipaddress.ip_address(ip)
return True
except ValueError:
return False
上述代码中,我们使用了 ipaddress 模块中的 ip_address 函数来检查给定的字符串是否是 IP 地址。如果字符串是合法的 IPv4 或 IPv6 地址,则返回 True;否则返回 False。我们使用了 try...except 结构来捕捉 ValueError 异常,因为当字符串不是合法的 IPv4 或 IPv6 地址时,ip_address 函数会抛出该异常。
下面是一个完整的 Python 程序,用于实现上述功能,包括了无效的字符串输入:
import ipaddress
def check_ip_address(ip):
try:
ipaddress.ip_address(ip)
return True
except ValueError:
return False
print(check_ip_address("192.168.1.1")) # True
print(check_ip_address("2001:0db8:85a3:0000:0000:8a2e:0370:7334")) # True
print(check_ip_address("invalid")) # False
本文介绍了如何使用 Python 中的 ipaddress 模块来检查给定的字符串是 IPv4 或 IPv6 还是无效的。使用该模块可以方便地实现对 IP 地址的处理,避免手动解析 IP 地址的麻烦。