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模块,p
ip 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` 函数或者类似的方法来创建一个新的已排序列表。
自然语言处理(NLP)之使用LSTM进行文本情感分析
dashuaibi123456:
自然语言处理(NLP)之使用LSTM进行文本情感分析
-Y7.:
Linux系统配置NAT网络模式
真取不出名字:
自然语言处理(NLP)之使用LSTM进行文本情感分析
皇甫铁铁: