Excel_A里是一大堆IP地址。
Excel_B里是IP地址所对应的物理地址。
两个文件:
Excel_A如下图所示 Excel_B如下图所示:
需求:
将Excel_A中的IP在Excel_B中找到对应的物理地址。
那么写的思路是什么样的呢?
刚开始想要操作excel,python里也有针对excel操作的模块,但是过于太久没有使用都忘得差不多了。所以就选用把要操作的Excel_A里的全都复制出来到一个txt里。然后再去到Excel_B中判断这个IP属于那个地市。
其实思路还是相对比较多的,可以以数列的形式进行筛选,比如,我要获得192.168.1.1这个IP是那个地区的。那么我直接将IP作为数列的key,地区作为values,然后写成一个函数,参数是IP,我每次都通过IP去获取地区,return出地区和IP就可以了,比如1-15这个区间是贵阳的,然后自然是需要加上这个区间。就比如跑192.168.1.1那么跑出来的结果就要是:192.168.1.1 贵阳 南明区
#我在脚本中就没有说传入IP我是直接截取第三个,比如192.168.1.2 我直接截取出1来。然后去判断的。
所以大致代码如下所示:
#!/url/bin/env python #encoding=utf-8 #横杠为空置 def pao(num): if num in range(0,125): flag = "" with open('diqu.txt', 'r') as f: for i in f.readlines(): data = i.strip() if data == '': flag += '-|' else: flag += data + "|" if num in range(0,15): diqu = "贵阳 " if num in range(15,33): diqu = "遵义 " if num in range(33,43): diqu = "安顺 " if num in range(43,59): diqu = "黔南 " if num in range(59,79): diqu = "黔东南 " if num in range(79,93): diqu = "铜仁 " if num in range(93,105): diqu = "毕节 " if num in range(105,113): diqu = "六盘水 " if num in range(113,126): diqu = "黔西南 " return(diqu + flag.split("|")[num]) if num in range(129,131): return("None") if num in range(135, 189): return("None") if num in range(201, 210): return("None") if num in range(234,241): return("None") if num in range(245,248): return("None") if num == 198 or num == 199 or num == 213 or num == 216 or num == 231 or num == 232 or num ==242 or num == 243: return("None") else:return("其他") def hander(string): ip = int(string.split('.')[2]) return(ip) count = -1 with open('ip.txt','r') as f: count +=1 if count == 125:exit() ip = f.readlines() for i in ip: ip = i.strip(' ') num = hander(ip) print(pao(num))