老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询

简介: 老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询

1、写作目的

 本文的写作目的,是基于我同学的一个业务需求,当时他领导丢给他一个表格,里面有很多电话号码,有的知道号码的归属地,有的不知道号码的归属地,然后让他将表格“归属地”这一栏补充完整。于是,我就写了这个文章。

 说明:本文涉及到的一切电话号码,纯属杜撰,如果雷同,纯属雷同。

2、判断电话号码是否合法

 这里我们不做太过详细、全面的判断,我们就从如下几个方面进行判断,满足如下要求,就判定该号码合法,否则就认为该号码不合法。


① 号码长度是否合法(大陆正常来说,号码是11位);

② 号码是否都是数字,如果都是数字,前三位数字是否满足“移动”、“联通”、“电信”的号段;

某个号码同时满足上述①②要求,我们就认为该号码是合法的。

1)移动、联通、电信号段说明

 你可以会有疑问,什么是“号段”?其实当你看了下面的解释后会很明白,没个电话号码前三位就属于一个号段,三大运营商,不同的 运营商有自己不同的号段,只有号段正确,才算是一个正确的电话号码。


联通:130,131,132,155,156,185,186,145,176

移动:134, 135 , 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188

电信:133,153,177,180,181,189

2)python脚本

phone_prefix = ['130','131','132','155','156','185','186','145','176','134','135','136','137','138','139','147','150','151','152','157','158','159','178','182','183','184','187','188','133','153','189']
def phone_check(phone_num):
    if len(phone_num) != 11:
        print("电话号码非法的,长度应该是11位!")
    else:
        if phone_num.isdigit():
            if phone_num[:3] in phone_prefix:
                print("电话号码是合法的")
            else:
                print("电话号码是非法的,号码前三位不是合法的号段!")
        else:
            print("电话号码应该全部由数字构成!")
phone_list = ["15826829441","14445263125","15631243768","18677281435","16614256432"]
for i in phone_list:
    phone_check(i)


结果如下:


image.png

3、电话号码的归属地查询

 经过上述的判断:对于合法的号码,我们需要进行电话号码的归属地查询;对于不合法的号码,直接显示无效号码即可。


1) phone模块的安装与导入

 完成本文需求,需要安装此模块,安装方法如下。使用该模块需要特别注意的是,使用该模块进行电话号码的判断,一定要实现判断该电话号码是否合法,只有合法的电话号码,才能用于归属地查询。


# phone模块的安装
pip install phone
# phone模块的导入
from phone import Phone


2) python脚本

from phone import Phone
def get_phone_info(phone_num):
    phone_info = Phone().find(phone_num)
    try:
        phone = phone_info['phone']
        province = phone_info['province']       #所在省份
        city = phone_info['city']               #所在城市
        zip_code = phone_info['zip_code']       #所在城市邮编
        area_code = phone_info['area_code']    #所在城市区号
        phone_type = phone_info['phone_type']  #号码运营商
    except:
        print('无效号码')
    return phone, province, city, zip_code, area_code, phone_type


结果如下:

image.png


4、案例说明

 上表是我自己杜撰的一些电话号码,我们利用上述介绍的方法,先对号码进行挨个的判断,如果电话号码合法,我们再进行电话号码的归属地查询。


from phone import Phone
import pandas as pd
def phone_check(phone_num):
    if len(phone_num) != 11:
        return "电话号码非法的,长度应该是11位!"
    else:
        if phone_num.isdigit():
            if phone_num[:3] in phone_prefix:
                return "电话号码是合法的"
            else:
                return "电话号码是非法的,号码前三位不是合法的号段!"
        else:
            return "电话号码应该全部由数字构成!"
def get_phone_info(phone_num):
    phone_info = Phone().find(phone_num)
    try:
        phone = phone_info['phone']
        province = phone_info['province']   #所在省份
        city = phone_info['city']           #所在城市
        zip_code = phone_info['zip_code']   #所在城市邮编
        area_code = phone_info['area_code'] #所在城市区号
        phone_type = phone_info['phone_type'] #号码运营商
    except:
        print('无效号码')
    return phone, province, city, zip_code, area_code, phone_type 
phone_prefix = ['130','131','132','155','156','185','186','145','176',
                '134','135','136','137','138','139','147','150','151',
                '152','157','158','159','178','182','183','184','187',
                '188','133','153','189']
df = pd.read_excel(r"G:\6Tipdm\7python办公自动化\查看电话号码运营商,归属地\电话号码.xlsx")
df["电话号码"] = df["电话号码"].astype(str)
df["号码是否合法"] = df["电话号码"].apply(phone_check)
# 注意:下面这个列表解析时可能有点复杂,好好体会一下。
df["省份"] = [get_phone_info(df["电话号码"][i])[1]  if element == "电话号码是合法的" else "号码无效" for i,element in enumerate(df["号码是否合法"])]
df["城市"] = [get_phone_info(df["电话号码"][i])[2]  if element == "电话号码是合法的" else "号码无效" for i,element in enumerate(df["号码是否合法"])]
df["邮编"] = [get_phone_info(df["电话号码"][i])[3]  if element == "电话号码是合法的" else "号码无效" for i,element in enumerate(df["号码是否合法"])]
df["区号"] = [get_phone_info(df["电话号码"][i])[4]  if element == "电话号码是合法的" else "号码无效" for i,element in enumerate(df["号码是否合法"])]
df["运营商"] = [get_phone_info(df["电话号码"][i])[5]  if element == "电话号码是合法的" else "号码无效" for i,element in enumerate(df["号码是否合法"])]
df


结果如下:

image.png

相关文章
考研真题)某银行提供了 1 个服务窗口和 10 个供顾客等待时使用的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾
考研真题)某银行提供了 1 个服务窗口和 10 个供顾客等待时使用的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号选取一位顾
|
4月前
|
缓存 Java 数据库
工作四年,关于过滤敏感词,我准备这样干
工作四年,关于过滤敏感词,我准备这样干
97 0
|
SQL 存储 自然语言处理
晚上8点在地铁上收到boss需求:把400多张表的关系画出来明早客户要!
晚上8点在地铁上收到boss需求:把400多张表的关系画出来明早客户要!
晚上8点在地铁上收到boss需求:把400多张表的关系画出来明早客户要!
|
文字识别 API 网络安全
一文带你看透手机号码归属地
手机号码归属地对企业与个人在生产与生活中起到了重要的作用,那么查询手机号码归属地的接口就是必不可少的了。APISpace上的手机号码归属地API就可以很好的满足手机号码归属地查询的需求。
1533 1
|
API 网络安全
手机号码归属地可以应用在哪些地方呢?
在手机号码整个使用群体中个人占比高达90%,使用人数大、占比高的特点也造成了电话诈骗的高频发生。同时由于个人信息的泄露,诈骗分子在充分了解了受害人的资料,使诈骗犯罪活动更高的犯罪成功率。在诈骗高发之时,手机号码归属地作为一个通讯衍生的工具,可以第一时间发挥其作用,在接到不明来电时可以通过手机号码归属地起到判断来电的作用。
305 0
手机号码归属地可以应用在哪些地方呢?
|
小程序 数据库
忘了交这个钱,小心专利失效!
忘了交这个钱,小心专利失效!
206 0
忘了交这个钱,小心专利失效!
|
供应链
上海还会再封吗?你的618快递包裹到得了吗?
618时期恰逢解封复工,很多人又问:“我618买的那么多快递是不是能发了?什么时候能收到?”
161 0
上海还会再封吗?你的618快递包裹到得了吗?
|
存储 设计模式 前端开发
你有没有想过为什么交易和退款要拆开不同的表?
近期做新项目,在设计表结构的时候,突然想起来之前面试的时候遇到的一个问题,那时候也是初出茅庐,对很多东西一知半解(当然现在也是),当时那个小哥哥问我为什么交易和退款要拆成两个表?是基于什么考虑?有什么好处和优点么?
374 0
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
本文目录 1、写作目的   2、判断电话号码是否合法 1)移动、联通、电信号段说明    2)python脚本   3、电话号码的归属地查询    1) phone模块的安装与导入    2) python脚本 4、案例说明
老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询
|
安全 前端开发 网络安全
《人民的名义》告诉我们:媒体安全不能少
在自传播时代中,不管是官方媒体、直播平台还是自媒体,都能以超高速的方式传播社会事件和政治热点,引导舆论,并让能解决问题的人迅速听到风吹草动。
8084 0