Python中是否有一个函数可以确定主机名是域名还是IP(v4)地址?
请注意,域名可能看起来像:alex.foo.bar.com
甚至(我认为这是有效的)1.2.3.com
:。
Python中是否有一个函数可以确定主机名是域名还是IP(v4)地址?
请注意,域名可能看起来像:alex.foo.bar.com
甚至(我认为这是有效的)1.2.3.com
:。
IP 和域地址之间的视觉差异之一是当您删除 IP 地址中的点时,结果将是一个数字。因此,基于这种差异,我们可以检查输入字符串是 IP 还是域地址。我们删除输入字符串中的点,然后检查是否可以将结果转换为整数,否则会出现异常。
def is_ip(address):
return address.replace('.', '').isnumeric()
尽管在某些 IP 表示中,例如点分十六进制(例如0xC0.0x00.0x02.0xEB
),IP 地址中可以同时包含字母和数字。但是,顶级域(.org、.com、...)从不包含数字。使用下面的函数将比上面的函数在更多的情况下起作用。
def is_ip(address):
return not address.split('.')[-1].isalpha()
我会使用 IPy 来测试字符串是否是 IP 地址,如果不是 - 假设它是域名。例如:
from IPy import IP
def isIP(str):
try:
IP(str)
except ValueError:
return False
return True