我是靠谱客的博主 腼腆石头,最近开发中收集的这篇文章主要介绍python手机_Python手机号码匹配,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天实战,从8000多个全国手机号码中筛选出北京地区的手机号码。

我们会学习python读取excel和csv文件,对两个文件数据对比。两个数据文件均为随机生成,文末为下载地址。

两个数据文件其中numbers_virtual.csv是手机号码表,segment_virtual.xlsx是号段表,用于标示北京地区。 手机号码编码规则是前3位用于标识运营商,如133表示电信,136表示移动,186表示联通;手机号中4-7位标识地区。

先打开两个文件观察一下:

号码-1.png

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手机号码匹配所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部