如何在PySpark中过滤数据表中的无效IP地址?
过滤数据表中的非合法IP地址内容
要清理表中src和dst列里的非IP无效内容,最可靠的方式是用正则表达式匹配合法IPv4地址,只保留符合规范的记录。
步骤1:定义合法IPv4的正则模式
标准IPv4地址的正则匹配规则如下,会严格校验四段0-255的数字格式:
ip_regex = r"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
步骤2:在Datatable中应用正则过滤
基于你已有的过滤结果dt4new1,使用rlike(正则匹配)方法对src和dst列做校验,只保留两列都符合IP格式的记录:
dt4new_clean = dt4new1.where(f"src rlike '{ip_regex}' and dst rlike '{ip_regex}'")
额外说明
- 该正则会自动排除所有非IP格式内容,比如"abc"、"192.168"、"1"这类无效值
- 如果需要禁止带前导零的IP(如
010.0.0.1),可以改用以下正则:ip_regex_no_leading_zero = r"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"
内容的提问来源于stack exchange,提问作者Decurro
相关产品推荐
相关产品推荐

