概述
今天实战,从8000多个全国手机号码中筛选出北京地区的手机号码。
我们会学习python读取excel和csv文件,对两个文件数据对比。两个数据文件均为随机生成,文末为下载地址。
两个数据文件其中numbers_virtual.csv是手机号码表,segment_virtual.xlsx是号段表,用于标示北京地区。 手机号码编码规则是前3位用于标识运营商,如133表示电信,136表示移动,186表示联通;手机号中4-7位标识地区。
先打开两个文件观察一下:
Windows开始菜单–命令行中‘cmd’–‘jupyter notebook’–’File‘-’New Notebook’,这就完成了新建。因为我把这两个数据文件放在D盘python文件夹下,所以需要先修改一下工作路径:
cd d:python
两个文件先读哪个?先理一下思路,对手机号码切片,再在号段表里匹配看有没有,所以我们先得有号段表——先读号段表。python有专门的库xlrd读excel文件,就像csv文件一样。
import xlrd
data = xlrd.open_workbook('segment_virtual.xlsx')
table = data.sheets()[0]
cols = table.col_values(0)
xlrd.open_workbook(‘segment_virtual.xlsx’)打开excel表格; data.sheets()[0]读取其中的sheet,这里中括号里用了0表示是第一个sheet; table.col_values(0)用来读取sheet里的列,我们取第1列。如果想知道cols个什么类型,可用print打印,发现是unicode格式的列表。
接下来读号码表
users = []
import csv
with open('numbers_virtual.csv','rb') as f:
reader = csv.reader(f)
for i in reader:
users.append(i[0])
这里不过多解释,和之前文章一样。需要说明的是 users.append(i[0])这句,这里用了i[0],因为i是一个含有单元素的列表,所以我们用[0]把它取出来,再放到users这个列表里。
接下来做匹配,如果users里面的每个号码自身第4-7位这个4位数,在cols这个号段表里能找到,那么就打印这个号码:
for number in users:
segment = number[3:7]
if segment in cols:
print number
这样我们就从全国拿出了北京地区的用户,同样的方法还可以拿出北京地区移动用户,这个留作练习。
两个数据文件下载地址链接: 链接: http://pan.baidu.com/s/1qYw8CCO 密码: zi4g
最后贴下随机生成11位手机号码的代码:
def createPhone():
prelist=["130","131","132","133","134","135","136","137","138","139","147","150","151","152","153","155","156","157","158","159","186","187","188"]
return random.choice(prelist)+"".join(random.choice("0123456789") for i in range(8))
numbers = []
for i in range(100000):
numbers.append(createPhone())
最后
以上就是腼腆石头为你收集整理的python手机_Python手机号码匹配的全部内容,希望文章能够帮你解决python手机_Python手机号码匹配所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复