
在现代应用开发中,处理电话号码是一项常见的需求。无论是为了验证用户身份、自动填充国家/地区信息,还是为了进行初步的防欺诈检查,能够通过电话号码提取其背后的元数据都非常有用。
今天,我们将学习如何使用 Python 中的 phonenumbers 库,只需几行代码,就能获取任何电话号码的地理位置、运营商信息以及时区。
我们将使用 phonenumbers 库,它是 Google 的 libphonenumber 库在 Python 上的移植版本,具有极高的准确性和权威性。
首先,请在你的终端中安装该库:
Bash
pip install phonenumbers下面是一个完整的脚本示例。它将解析一个字符串形式的电话号码,并将其分解为可读的地理信息和技术细节。
Python
import phonenumbersfrom phonenumbers import geocoder, carrier, timezonedef get_phone_details(phone_number): try: # 解析电话号码 (需包含国家代码,如 +86) parsed_number = phonenumbers.parse(phone_number) # 1. 获取地理位置描述 (中文显示) location = geocoder.description_for_number(parsed_number, "zh") # 2. 获取服务运营商名称 (中文显示) service_provider = carrier.name_for_number(parsed_number, "zh") # 3. 获取所属时区 time_zones = timezone.time_zones_for_number(parsed_number) print(f"--- 电话号码详情: {phone_number} ---") print(f"📍 地理位置: {location}") print(f"📡 运营商: {service_provider}") print(f"🕒 所属时区: {time_zones}") except Exception as e: print(f"解析失败: {e}")# 测试用例if __name__ == "__main__": # 请确保输入的号码带有 '+' 和国家代码 test_number = "+8613800138000" get_phone_details(test_number)在上述代码中,我们主要利用了 phonenumbers 提供的三个核心模块:
geocoder:根据号码的前缀(如国家码和区号)返回对应的地理区域名称。通过设置语言参数为 "zh",我们可以直接获得中文地名。carrier:识别该号码所属的电信运营商。需要注意的是,如果号码发生了“携号转网”,该功能可能返回初始运营商信息。timezone:返回该号码所在地区的标准时区列表。利用 Python 处理这类任务非常高效。phonenumbers 库不仅可以用于获取信息,还能用于号码格式化(将本地号码转换为国际标准格式格式)以及合法性校验(判断一个号码是否真的存在)。
小贴士:在实际生产环境中,请始终要求用户输入带有国家代码(如 +86)的号码,以确保解析的准确性。
长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等 推荐阅读
点击 阅读原文 了解更多