【发布时间】:2022-01-28 08:58:13
【问题描述】:
我目前正在使用 netaddr 从 IP 字符串中验证 IP 地址。该字符串中可能包含一些空(nan)值,因此我收到以下错误。
AppData\Local\Programs\Python\Python39\lib\site-packages\netaddr\ip\__init__.py", line 305, in __init__
raise AddrFormatError('failed to detect a valid IP ' \
netaddr.core.AddrFormatError: failed to detect a valid IP address from nan
脚本在检测到其第一个无效 IP 地址后立即停止。它不会遍历所有记录。 我希望脚本将错误的行/记录存储在单独的 csv 文件中,并继续验证其余数据。或者脚本可以删除 IP 地址错误的行并继续处理剩余的行。
下面是我从“ip”列验证 IP 地址的实现
def ipvalidate(df):
ip = df
for block in ip_network:
if IPAddress(ip) in IPNetwork(block):
return 'int'
else:
return 'ext'
上面的df可能不是字符串(我对python很陌生)。下面是调用 ipvalidate 函数的代码。在(row.ip)下面,ip是我表中的一列
df['detect_ip'] = df.apply(lambda row: ipvalidate(row.ip), axis=1)
我尝试过 'dropna' 但它一直在抱怨“'dropna' 不适用于字符串”或类似的东西。
任何见解都会非常有帮助。提前致谢
【问题讨论】:
-
请分享您的数据样本,以便复制
标签: python pandas validation ip-address