python处理字符串
最近在写一个IP比对程序,或者说是IP查询程序
上一篇文章不是已经在数据库中存入了大量的IP地址了吗,但是咱们这个存储速度或者说查询速度还是太慢了,4000+个域名就几乎用了2个小时。
那咱就慢慢改进
多线程以后再说,最近在gitlab上获得了一份2017年2月份的IP分布表,形式类似于(首IP+末IP+地理位置)的格式,那就用这个现成的IP分布表来解决慢速的问题。
如果不使用IP分布表,那就必须对每个IP进行网络爬虫来获得地理位置(那个真的很占用网络资源,而且很慢)那么当我们使用了IP分布表之后就可以不使用爬虫,直接在IP分布表进行查询,优点是查询很快,缺点也有,那就是位置信息不详细,而且IP分布表需要不断更新。
那么如果我们把这两种方式结合起来,那么这个程序会得到很好的优化。
先对IP分布表处理
我们获得的IP格式是————>xxx.xxx.xxx.xxx
但IP分布表的格式是————>xxx.xxx.xxx.xxx |xxx.xxx.xxx.xxx | 地理位置
今天现实现一个简单任务——>就是把“|“去掉
思路
1.找到每一行的第一个“|“
2.保存“|“前面的字符查串,舍去“|“,保存后面的字符串
3.使用后面的字符串继续找“|“,保存“|“前面的字符串
4.舍去“|“,保存后面的字符串
上代码
f = open("ip_local.txt")
f1 = open("adre.txt","w")
num = 0
while (num<33117):
a = f.readline()[:-1]
dele_adre = a.index("|")
ip_1 = a[0:dele_adre]
line_change = a[dele_adre+1:]
dele_adre_2 = line_change.index("|")
ip_2 = line_change[0:dele_adre_2]
adre = line_change[dele_adre_2+1:]
num = num+1
str1 = ip_1 + " " + ip_2 + " " adre
print >> f1.str1
f.close()
f1.close()
截图如下
待更