是否有任何现有的库可以将字符串解析为 ipv4 或 ipv6 地址,或者至少可以识别字符串是否是 IP 地址(无论哪种类型)?
最佳答案
是的,有ipaddr
模块,可以帮助您检查字符串是否为IPv4/IPv6地址,并检测其版本。
import ipaddr
import sys
try:
ip = ipaddr.IPAddress(sys.argv[1])
print '%s is a correct IP%s address.' % (ip, ip.version)
except ValueError:
print 'address/netmask is invalid: %s' % sys.argv[1]
except:
print 'Usage : %s ip' % sys.argv[0]
但这不是一个标准模块,所以并不总是可以使用它。
您还可以尝试使用标准的 socket
模块:
import socket
try:
socket.inet_aton(addr)
print "ipv4 address"
except socket.error:
print "not ipv4 address"
对于 IPv6 地址,您必须使用 socket.inet_pton(socket.AF_INET6, address)
。
我还想指出,inet_aton
将尝试转换(并真正转换)地址,如 10
、127
等,看起来不像 IP 地址。
关于python - 检查 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827961/