从lis验证IP地址

2024-06-06 14:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从可能包含格式错误的地址或其他垃圾的列表中验证IP地址。如果字段不包含格式正确的字段,只需继续忽略该字段。在

根据How to validate IP address in Python?,似乎有两种方法可以实现这一点,REGEX或socket.inet_aton()。在

下面是使用socket.inet_aton()解析CSV并检查字段是否为IPv4地址的尝试。目前它打印垃圾地址或格式不正确的IP地址。有什么关于打印反向或IP地址的提示吗?在

更新

数字字段不以离散八进制表示法打印,即12345打印。如何过滤掉非八进制符号?在

for data in import_text('data.csv', ','):
    try:
        socket.inet_aton(data)
    except socket.error:
        continue
    print (data)

Tags: toinip列表data地址格式错误
3条回答

print语句位于“except”块中,因此只有在将传递的字符串解析为IP地址时出现错误时才会调用它。在

将for循环的内容更改为:

try:
    socket.inet_aton(data)
except socket.error:
    continue

print (data)

如果没有发生异常,则执行try/except块的else子句。在

try:
    socket.inet_aton(data)
except socket.error:
    pass
else:
    print(data)

但是,由于您需要将它表示为一个离散的八位字节,所以最好的方法不是regex,不是socket.inet_aton,而是一个简单的验证函数:

^{pr2}$

那就是:

if valid_ip(data):
    print data

根据手册,inet_aton接受少于3个点的字符串:

inet_aton() also accepts strings with less than three dots; see the Unix manual page inet(3) for details.

这可能是你身上发生的事情的一部分。在

相关问题 更多 >