添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
import socket
ip_list = ['10.5.11.1', '192.168.1.33', '10.5.2.4', '10.5.1.3', '10.5.11.13', '10.5.11.12', '10.5.1.1', '10.5.1.2',
          '10.5.1.11', '10.5.1.13']
print(sorted(ip_list, key=socket.inet_aton))
for i in sorted(ip_list, key=socket.inet_aton):
    print(i)

运行结果:

 2、使用sort()函数构造排序

示例代码:

ip_list = ['192.168.1.33', '10.5.2.4', '10.5.1.3', '202.98.96.68', '133.120.1.1', '192.168.1.22']
print(sorted(ip_list, key=lambda x: (int(x.split('.')[0]), int(x.split('.')[1]), int(x.split('.')[2]))))
ip_lst = sorted(ip_list, key=lambda x: (int(x.split('.')[0]), int(x.split('.')[1]), int(x.split('.')[2])))
for i in ip_lst:
    print(i)

运行结果:

3、对ip地址进行分类

如:这儿按最后一位进行分类,写入不同的文件中。此处忽略对ip地址的排序。

示例代码:

ip_list = ['192.168.1.33', '10.5.2.4', '10.5.1.3', '202.98.96.68', '133.120.1.1', '192.168.1.22']
for ip in ip_list:
    last_ip_num = ip.split('.')[-1]
    with open('data/xxx.xxx.xxx.{}.txt'.format(last_ip_num), 'a', encoding='utf-8') as f:
        f.write(ip)

运行结果:

        优化上述代码,当ip_list列表中有数以亿计的ip时,上述代码效率是非常低的,耗时主要在打开文件写数据方面,可以把每一类ip先暂时存储,最终一次性写入文件中。

示例代码:

ip_list = ['192.168.1.33', '10.5.2.33', '10.5.1.33', '202.98.96.1', '133.120.1.1', '192.168.1.1']
ip_dic_save = {}
for ip in ip_list:
    last_ip_num = ip.split('.')[-1]
    if f'xxx.xxx.xxx.{last_ip_num}.txt' not in ip_dic_save:
        ip_dic_save[f'xxx.xxx.xxx.{last_ip_num}.txt'] = []
        ip_dic_save[f'xxx.xxx.xxx.{last_ip_num}.txt'].append(ip + ';')
    else:
        ip_dic_save[f'xxx.xxx.xxx.{last_ip_num}.txt'].append(ip + ';')
print(ip_dic_save)
path = 'data/'
for key, value in ip_dic_save.items():
    with open(path + key, 'a', encoding='utf-8') as f:
        f.writelines(value)

运行结果:

        如果数据量过大,ip_dic_save会占用较大内存,可以对字典中的每个key:value键值对进行判断,若value列表长度到达某个长度时,可以分批次写入到文件中。

使用了两种算法对ip地址进行排序,并测试了两种算法的时间。一种是将ip地址转化成二进制形式,然后用sort函数,和重新定义的比较函数进行排序,一种是分割ip地址为四个部分,分别排序,每次对一个地址位进行排序并存入字典,然后再排序。知道四个部分排序完毕,经测试第二种算法比第一种算法运算的时间效率至少快一个数量级: sorted the ip not used BINARY consumed 0.010999917984 s! sorted the ip used BINARY consumed 0.126999855042 s! 推荐使用第二种算法,函数已经封装好,直接把地址存到list里面,用函数sssortip(list)即可
import socket listIP = ['10.5.11.1', '192.168.1.33', '10.5.2.4', '10.5.1.3', '10.5.11.13', '10.5.11.12', '10.5.1.1', '10.5.1.2', '10.5.1.11', '10.5.1.13'] listIP.sort(key=socket.inet_aton) print(listIP)
因为网络维护过程总是有许多IP要聚合,这个主要功能就是把一堆IP地址或者IP地址段,按照CIDR格式尽量小的聚合成CIDR格式。 其中IP的处理使用IPy模块,pip install IPy即可。 需要整改的IP段按照行放入文件“ip.list” 输出的IP段在“new_ip.list” python小白,,代码太差,见谅 有问题期望大家指出加粗样式 # -*- coding: utf-8 -*- # @Time : 2020/6/6 20:43 # @Author : Zhanghaijun
1. 背景说明 从openstack的nova list中获取了虚拟机的ip地址,但这些ip都没有排序和分组,为了进一步增强可读性,对ip地址执行排序操作,在shell下,可以通过sort命令,执行排序操作,具体操作如下:[root@controller~]#catip.txt|sort-t"."-k1,1n-k2,2n-k3,3n-k4,4n 10...
Q:在A2:A8单元格中存储的IP地址,点升序按钮后结果并不能依次按照4个地址段的大小进行排序,如何解决? A:方法一、使用辅助列在B2输入公式如下,然后对B列进行排序: =SUMPRODUCT(MID(SUBSTITUTE(A2,".",REPT(" ",20)),{1,21,41,61},20)*10^{9,6,3,0}) 方法二、使用数据分列功能把IP地址存放到4列,然后进
说明:给定的IP地址是一个字符串。给定的IP地址如下: String ip_str = "23,12,10.5 192.168.100.223 3.3.3.3 10.10.10.10"; package mypack; import java.util.Arrays; public class RegexDe...
公司的现场工程师在客户现场理了一个IPC需求,其中涉及局域网ip地址; 一个IP地址对应一个IPC,我要确保这里面的ip是没有重复的,好确定实际有多少个IPC; 同时对IP做个排序,方便查看; 仅此而已。 python:3.6.5 # coding=utf-8 ip=\ 192.168.1.12 192.168.1.14 192.168.1.15 192.168.1.16 192.168.1.17 192.168.1.1
IP地址(Internet Protocol Address)排序 1.IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数 2.当用编程解决IP地址排序问题就要解决两个IP地址的比较,比较思路如下(i=1、2、3) 1>当两个IP地址第i位不等时就可以返回比较值 2>当两个IP地址第i位不等时,比较第i+1位 3>重复一...
# 使用正则表达式匹配IP地址 ip_regex = r'\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b' ips = re.findall(ip_regex, s) # 将IP地址转换成ipaddress.IPv4Address对象,并排序 sorted_ips = sorted([ipaddress.IPv4Address(ip) for ip in ips]) # 打印排序后的IP地址 for ip in sorted_ips: print(str(ip)) 输出结果: 10.0.0.1 192.168.1.1 在这个示例中,我们首先使用正则表达式 `\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b` 匹配字符串中的IP地址。这个正则表达式的含义是:匹配以单词边界开头和结尾的、由四个数字和三个点号组成的字符串。这个正则表达式并不完整,因为它只匹配了最基本的IP地址格式,但足够应付大多数情况。 接下来,我们将匹配到的IP地址转换成 `ipaddress.IPv4Address` 对象,并使用 `sorted` 函数对它们进行排序。最后,我们打印排序后的IP地址。 需要注意的是,`ipaddress.IPv4Address` 对象是不可变的,因此我们无法对它们进行原地排序,而是需要使用 `sorted` 函数或者类似的方法来创建一个新的已排序列表。 Python中国的居民身份证号码长度18位,是属于 公民个人的敏感信息,在系统中显示的时候需要将其中某些字符屏蔽掉,用"星号"来显示。输入格式 一行,三个输入项,第一个是身份证号;第二个是整数s,表示屏蔽的起始位;第三个是整数t,表示屏蔽的结束位 一行,处理后的身份证号 自然语言处理(NLP)之使用LSTM进行文本情感分析 dashuaibi123456: NameError: name 'input_shape' is not defined怎么解决啊 自然语言处理(NLP)之使用LSTM进行文本情感分析 -Y7.: 报错:ValueError: Unrecognized keyword arguments passed to Embedding: {'input_length': 180}怎么解决 Linux系统配置NAT网络模式 真取不出名字: 博主你好,我用你的方法可以上网了,但是Xshell连接不上,主机ping不通虚拟机了,请问这怎么解决 自然语言处理(NLP)之使用LSTM进行文本情感分析 皇甫铁铁: AttributeError: 'str' object has no attribute 'decode' 这个报错怎么处理呀