什么: 正在使用Python 2.7。
我正在使用virustotal API以列表格式生成IP列表。当我在对象上运行type()时,它返回list。底部是数据的示例。有没有办法制作过滤器,正则表达式列表理解或一些通配符系统来删除从10. 172.16-172.31和192.168开始的所有IP?
原因:
从报告中可以生成一些常见的IP,但它们对我来说毫无用处。我做了一个列表理解来过滤掉特定的地址,但是列表正在增长,并且很快就会明白排除主列表的列表会减慢速度。我想删除所有没有重要的IP,所以我不会通过无用的提交来减慢我的脚本。
如何:
unique = [xte for xte in unique if xte not in fil2]
fil2 = [['255.255.255.255',67],['137.170.185.211',123],['213.186.33.99',53],['10.0.2.15',68]]
示例:数据:
>>> fil2 = [['255.255.255.255',67],['137.170.185.211',123],['213.186.33.99',53],['10.0.2.15',68]]
>>> type(fil2)
<type 'list'>
答案 0 :(得分:0)
如何制作列表理解并制作startswith
之类的:
ips = [ip for ip in file2[0] if not str(ip[0]).startswith(('192.168.','10.','172.16.','172.31.')) ]
答案 1 :(得分:0)
您可以执行以下操作:
dont_start_with_these = ('10.', '172.16.', '172.31.', '192.168')
filtered_ip = [ip for ip in fil2 if not ip[0].startswith(dont_start_with_these)]
编辑:这是一个更紧凑的解决方案,如Vizjerei所建议的