3

Python中是否有一个函数可以确定主机名是域名还是IP(v4)地址?

请注意,域名可能看起来像:alex.foo.bar.com甚至(我认为这是有效的)1.2.3.com:。

4

2 回答 2

1

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()
于 2020-06-04T08:18:39.787 回答
0

我会使用 IPy 来测试字符串是否是 IP 地址,如果不是 - 假设它是域名。例如:

from IPy import IP
def isIP(str):
    try:
        IP(str)
    except ValueError:
        return False
    return True
于 2015-06-03T17:00:08.513 回答