【发布时间】:2012-04-14 11:37:36
【问题描述】:
我想从可能包含格式不正确的地址或其他垃圾的列表中验证 IP 地址。如果该字段不包含格式正确的字段,只需继续忽略该字段即可。
根据How to validate IP address in Python?,似乎有两种方法可以做到这一点,REGEX 或socket.inet_aton()。
下面是尝试使用socket.inet_aton() 解析CSV 并检查该字段是否为IPv4 地址。目前它打印垃圾或格式不正确的 IP 地址。关于打印逆向或正确 IP 地址的 IP 的任何提示?
更新
数字字段不以离散八位字节表示法打印,即 12345 打印。如何过滤掉非八位字节符号?
for data in import_text('data.csv', ','):
try:
socket.inet_aton(data)
except socket.error:
continue
print (data)
【问题讨论】:
-
您想要纠正的到底是什么错误?
-
我希望
print语句只返回有效的 IP 地址。目前只返回无效的IP地址或垃圾。 -
您要打印还是退回?这是完全不同的两件事。
-
打印,从下面的反馈中更新问题,尽管我现在意识到
socket.inet_aton()将匹配 111、111.111 或 1111.111.111 111.111.111.111。需要确保它是一个有效的 IP,而不是速记。 -
12345是一个完全有效的 IP 地址,它只是写为一个 32 位整数而不是离散的八位字节。