我正在创建自己的报告工具,并试图找出如何将IP地址与端口号排序。你知道吗
如何使用端口号对IP地址进行排序,以便先对IP地址进行排序,然后再通过端口号进行排序。我能够很好地对IP地址进行排序,但是当与端口号结合使用时,它就变得很困难了。你知道吗
a = ['192.168.0.3 (443/tcp)|', '192.168.0.176 (443/tcp)|', '192.168.0.40 (443/tcp)|', '192.168.0.15 (8443/tcp)|', '192.168.0.16 (8443/tcp)|', '192.168.0.12 (443/tcp)|', '192.168.0.9 (3389/tcp)|', '192.168.0.15 (443/tcp)|', '192.168.0.16 (443/tcp)|', '192.168.0.3 (3389/tcp)|', '192.168.0.14 (443/tcp)|']
print(a.sort(key=lambda s: map(int, s.split('.')))) #this works fine with just IP address not with the current format of (xxx/tcp). The pipe is for delimiters so please ignore.
我想得到的输出排序的IP地址第一,然后为每个IP排序通过端口号。例如,前几个结果是:
a= ['192.168.0.3 (443/tcp)|', '192.168.0.3 (3389/tcp)|', 192.168.0.9 (3389/tcp)|, ...']
您可以在一行中使用
sorted
这样做:使用
re.findall
:输出:
说明:
map(int, re.findall('\d+', x))
:查找所有数字并使其成为int
*ips, port
:将上面的int
解包并重新打包到除最后一个(*ips
)和最后一个(port
)之外的所有文件中sorted(a, key=get_ip_port)
:因为get_ip_port
返回两个键(ips
,port
),所以sorted
首先按ips
对a
排序,然后按需要对port
排序。你知道吗您可以使用多个条件进行排序(
map(int,e[0].split('.'))
作为条件1,int(e[1].lstrip('(').split('/')[0])
作为条件2),如下所示相关问题 更多 >
编程相关推荐