1. # -*- coding: utf-8 -*-

1. 查找单个电话号码

  1. from phone import Phone
  2.  
  3. def get_phone_info(phone_num):
  4. phone_info = Phone().find(phone_num)
  5. try:
  6. phone = phone_info['phone']
  7. province = phone_info['province'] #省
  8. city = phone_info['city'] #城市
  9. zip_code = phone_info['zip_code'] #邮编
  10. area_code = phone_info['area_code'] #区号
  11. phone_type = phone_info['phone_type'] #运营商
  12. except:
  13. print('----- the phone number is empty, please check your phone number! -----')
  14. return phone, province, city, zip_code, area_code, phone_type
  15.  
  16. if __name__ == "__main__":
  17. phone_num = '177********' #输入要查询的电话号码,注意只能是三大运营商的手机号码
  18. if len(phone_num)==0:
  19. print('please input your phone number first!')
  20. phone_num = input("phone number:")
  21. phone_info = get_phone_info(phone_num) #列表返回
  22. print(phone_info[0]) #电话号
  23. print(phone_info[1]) #省份
  24. print(phone_info[2]) #城市
  25. print(phone_info[3]) #邮编
  26. print(phone_info[4]) #区号
  27. print(phone_info[5]) #运营商

2. 查找excel里面的电话号码

  1. from phone import Phone
  2. import xlrd
  3. import os
  4. import xlsxwriter
  5.  
  6. def get_phone_info(phone_num):
  7. phone_info = Phone().find(phone_num)
  8. try:
  9. phone = phone_info['phone']
  10. province = phone_info['province'] #省
  11. city = phone_info['city'] #城市
  12. zip_code = phone_info['zip_code'] #邮编
  13. area_code = phone_info['area_code'] #区号
  14. phone_type = phone_info['phone_type'] #运营商
  15. except:
  16. print('----- the phone number is empty, please check your phone number! -----')
  17. return phone, province, city, zip_code, area_code, phone_type
  18.  
  19. def get_phone_info_excel(phone_number_path, sheet_num = 0):
  20. #解析地址
  21. file_name = os.path.splitext(phone_number_path)[0]
  22. file_realname = file_name.split('\\')[-1] #文件名
  23. print(file_realname)
  24.  
  25. myWorkbook = xlsxwriter.Workbook(file_name+'_get_info.xlsx')#创建一个excel文件,用于待会写数据
  26. sheet_file_realname = myWorkbook.add_worksheet(file_realname)#在文件中创建一个名为file_realnamesheet,不加名字默认为sheet1
  27. bold= myWorkbook.add_format({'bold':True})#设置一个加粗的格式对象
  28. # workfomat = workbook.add_format({
  29. # 'bold' : True, #字体加粗
  30. # 'border' : 1, #单元格边框宽度
  31. # 'align' : 'center', #对齐方式
  32. # 'valign' : 'vcenter', #字体对齐方式
  33. # 'fg_color' : '#F4B084', #单元格背景颜色
  34. # })
  35. sheet_file_realname.write(0, 0, u'电话号',bold) #给第一行加标签
  36. sheet_file_realname.write(0, 1, u'省份',bold)
  37. sheet_file_realname.write(0, 2, u'城市',bold)
  38. sheet_file_realname.write(0, 3, u'邮编',bold)
  39. sheet_file_realname.write(0, 4, u'区号',bold)
  40. sheet_file_realname.write(0, 5, u'运营商',bold)
  41.  
  42. #设置读Excel的编码格式
  43. xlrd.Book.encoding = "gbk"
  44. rb = xlrd.open_workbook(phone_number_path)
  45.  
  46. sheet = rb.sheet_by_index(sheet_num) #读第几个sheet,默认为第一个
  47. nrows = sheet.nrows
  48. for i in range(nrows):
  49. phone_num = int(sheet.cell_value(i, 0)) #假设电话号码在第一列,从第一行开始,也就是索引(0,0),
  50. #int是因为读入的时候自动变成float,会超过电话号码长度
  51. phone_info = get_phone_info(phone_num)
  52. sheet_file_realname.write(i + 1, 0, phone_info[0])
  53. sheet_file_realname.write(i + 1, 1, phone_info[1])
  54. sheet_file_realname.write(i + 1, 2, phone_info[2])
  55. sheet_file_realname.write(i + 1, 3, phone_info[3])
  56. sheet_file_realname.write(i + 1, 4, phone_info[4])
  57. sheet_file_realname.write(i + 1, 5, phone_info[5])
  58. myWorkbook.close()
  59.  
  60. if __name__ == "__main__":
  61. phone_number_path = r'D:\Python_workspace\spyder_space\电话号码.xlsx'
  62. get_phone_info_excel(phone_number_path)

3. 安装phone包:pip install phone

4. 如果电话号码查不到信息或者输入的不在解析范围内,会报错:UnboundLocalError: local variable 'phone' referenced before assignment,那是因为并没有执行get_phone_info函数的try语句,却return了try语句中的参数造成的。

参考:https://www.cnblogs.com/yaoqian/p/9358107.html

Python查找电话号码归属地、邮编、运营商信息等的更多相关文章

  1. MTK Android 读取SIM卡参数,获取sim卡运营商信息

    android 获取sim卡运营商信息(转)   TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TE ...

  2. # Linux Whois3获取 运营商信息

    Linux Whois3获取 运营商信息 APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的,并提供了一个查询工具,下面就让我们看看如何在Linux ...

  3. Android系统分析之运营商显示流程分析之运营商信息的读取流程二

    运营商显示流程分析之运营商信息的读取流程 一. SIM卡运营商信息的读取 从前面的 运营商信息的获取和赋值 可以知道SIM卡运营商的赋值最终是在 SIMRecords 中完成的, 而SIM卡信息的相关 ...

  4. Java ip地址查询,根据ip接口获得ip所在省市区,邮编,运营商等

    早上一来,项目经理就说需要添加一个用户ip归属地查询功能,然后在网上搜罗半天,研究出一个比较简单的方法,通过接口返回地址json数据 有百度接口,新浪接口,这里用的是淘宝ip接口 通过淘宝IP地址库获 ...

  5. Android 获取运营商信息(完整版)-解决高通,MTK等双卡问题

    由于国内的运营商问题,双卡手机获取IMSI号问题要根据厂商API 来实现. 下面我们就来做一套完整的分析运营商获取IMSI号逻辑. 1,首先我们要判断手机的平台. 1.1,判断手机是否MTK平台 1 ...

  6. github开源的一些ip解析 ,运营商信息,经纬度 地址 后续开发使用

    https://github.com/wzhe06/ipdatabase  ip解析 https://github.com/flyaction/ipdatabase 比较新 https://githu ...

  7. PHP--根据手机号-淘宝平台获取归属地运营商信息

    //获取手机账号信息 public function get_mobile_area($mobile){ $sms = array('province'=>'', 'supplier'=> ...

  8. Android手机上判断网络运营商

    我们想获取手机的运营商信息.通常都会去调用系统的TelephonyManager类的取数据.但是很多时候可能取不到卡的信息(例如双卡手机和 一些特殊卡),这样就区别不了运营商了.但是有时候我们的需求要 ...

  9. WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商

    在网上查资料闲逛,偶然间看到了张戈博客的评论框有点意思,于是就收走拿到了我的米扑博客. 本文为米扑博客原创:总结分享 WordPress显示评论者IP归属地.浏览器.终端设备.电信运营商 WordPr ...

随机推荐

  1. LeetCode_257. Binary Tree Paths

    257. Binary Tree Paths Easy Given a binary tree, return all root-to-leaf paths. Note: A leaf is a no ...

  2. 海思NB-IOT模组在平台上注册

    1. 添加设备,网页测试平台 https://develop.ct10649.com:8093/#/applications/1_lq7clNExjnGvPvGMG8w7_oYn4a/products ...

  3. 06点睛Spring4.1-Bean的初始化和销毁

    6.1 Initialization和Destruction spring对bean初始化的时候和销毁时候进行某些操作提供了支持 利用@Bean的initMethod和destroyMethod(和x ...

  4. filebeat输出到kafka

    # cat filebeat.yml filebeat.inputs: - type: log enabled: true tail_files: true paths: - /data/www.ex ...

  5. 微信小程序之 语言特点

    主页面的CSS样式默认为index.wxss,无需引入

  6. C# 代码自动生成工具

    开源:C# 代码自动生成工具,支持站点前后台   前言 写这个项目有很长一段时间了,期间也修修改改,写到最后,自己也没咋用(研究方向变化了). 正文 具体项目开源了:https://github.co ...

  7. InstallerProjects打包

    C#—使用InstallerProjects打包桌面应用程序   前言 打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘. ...

  8. mousedown、mouseup、click事件之间的关系及执行顺序

      三个事件的触发时机 mousedown 当鼠标指针移动到元素上方,并按下鼠标按键(左.右键均可)时,会发生 mousedown 事件.与 click 事件不同,mousedown 事件仅需要按键被 ...

  9. 如何使用C++实现单链表

    线性表--链表 为什么假期也在发文章 //TODO NullGirlfrindException 请忽略以上两行无聊的事实...... 如何弥补顺序表的不足之处? 第一次学习线性表一定会马上接触到一种 ...

  10. STL源码剖析——空间配置器Allocator#1 构造与析构

    以STL的运用角度而言,空间配置器是最不需要介绍的东西,因为它扮演的是幕后的角色,隐藏在一切容器的背后默默工作.但以STL的实现角度而言,最应该首先介绍的就是空间配置器,因为这是这是容器展开一切运作的 ...