python - 以不同格式对 IP 地址进行排序
问题描述
我试图得到:
['192.168.70.19 (tcp/1433)']
['192.168.70.223 (tcp/1051),192.168.70.19 (tcp/1025), 192.168.70.245 (tcp/1051)']
['192.168.70.19 (tcp/3389),192.168.70.223 (tcp/3389)']
至
['192.168.70.19 (tcp/1433)']
['192.168.70.19 (tcp/1025),192.168.70.223 (tcp/1051), 192.168.70.245 (tcp/1051)']
['192.168.70.19 (tcp/3389),192.168.70.223 (tcp/3389)']
这是我的代码,它不正确。由于想要保留 tcp 部分,我无法对 IP 地址进行排序。有没有人对此有更好的建议或解决方案。任何想法,将不胜感激。
import re
a=['192.168.70.19 (tcp/1433)', '192.168.70.223 (tcp/1051),192.168.70.19 (tcp/1025),192.168.70.245 (tcp/1025)', '192.168.70.19 (tcp/3389),192.168.70.223 (tcp/3389)']
for z in a:
if z.find(','):
#removes tcp part (but I want to keep)
#b = re.sub(r'\(.*?\)', '', z)
#I can sort the IP with this, but it doesnt have the tcp part.
#z.sort(key=lambda s: map(int, s.split('(')[0].split('.')))
解决方案
这是一个没有正则表达式的解决方案
[','.join(sorted(x.split(','), key= lambda x: x.split()[0])) for x in a]
要对 IP+TCP 组合进行排序,请使用该元组的第一部分对 ip addr 进行排序
输出:
['192.168.70.19 (tcp/1433)',
'192.168.70.19 (tcp/1025),192.168.70.223 (tcp/1051),192.168.70.245 (tcp/1025)',
'192.168.70.19 (tcp/3389),192.168.70.223 (tcp/3389)']
推荐阅读
- php - 如何在 PHP Codeigniter 中发送动态消息(SMS)
- spring-kafka - 为每个 KafkaTemplate 指定 client.id
- python - 使用 Python 查找特定的重叠模式
- emv - 解释 EMV MDK 密钥 Enc MAC AC
- javascript - 引导表跟随 div 内的滚动
- angular - 在按钮单击时选择 PrimeNg 多选选项,Angular
- javascript - Javascript Regex - 从标签字符串中获取特定的 html 标签
- java - 未经授权的用户访问某些 url
- symfony - Symfony 异常 - 目录不可写
- amazon-web-services - 在 AWS SDK 中同时处理多个用户