首页 > 其他分享 >老板丢给我一堆电话号码,让我挨个进行归属地、运营商查询

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

时间:2022-10-11 14:36:08浏览次数:77  
标签:info 号码 df 合法 挨个 phone 电话号码 运营商


如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:【数据分析与统计学之美】,进群和作者交流!

目录

  ​​1、写作目的​​​   ​​​

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

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

​2)python脚本​​​   

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

​1) phone模块的安装与导入​​​    

​2) python脚本​​​   

​4、案例说明​

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)

结果如下:

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

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

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

1) phone模块的安装与导入

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

# phone模块的安装
pip install phone
# phone模块的导入
from phone import
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,

结果如下:

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

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["号码是否合法"])]

结果如下:

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


标签:info,号码,df,合法,挨个,phone,电话号码,运营商
From: https://blog.51cto.com/u_14346314/5746292

相关文章

  • 简单-1694. 重新格式化电话号码
    给你一个字符串形式的电话号码 number 。number 由数字、空格 ''、和破折号 '-' 组成。请你按下述方式重新格式化电话号码。首先,删除 所有的空格和破折号。其......
  • 电话号码分析与处理、开发小游戏贪食蛇
    Java核心API--电话号码分析与处理一、熟悉Math类    Math类包含执行基本数字运算的方法,它没有构造方法,当使用类中的成员时,要查看类中的成员是否是静态,如果是静态......
  • leetcode17-电话号码的字母组合
    17.电话号码的字母组合这题还是看了题解才写出来。一开始不懂得每一层递归处理不同数字对应的字母,又想一些二维数组的操作,就搞复杂了。题中的index就代表当前正在处理......
  • 常见的云服务器运营商及相关的优惠活动
    云服务器(ElasticComputeService,ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创......