迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 电话号码验证

作者:迹忆客 最近更新:2023/06/15 浏览次数:

这篇 Python 文章将展示我们如何使用 Python 的电话号码库验证电话号码。 我们将学习使用 Python 来验证电话号码,然后根据地区、国家、大洲和运营商对其进行格式化以进行显示。

我们将从一个简单的示例开始,然后转向一个复杂的示例。 那么让我们开始吧,让 Python 验证和格式化电话号码。


在 Python 中验证电话号码

验证和验证电话号码的正确性可能非常具有挑战性。 电话号码的格式可能因我们所在的国家/地区而异。

即使在同一个国家内,也可能存在显着差异。 一些国家使用相同的国家代码,而另一些国家使用多个国家代码。

有些国家甚至多次使用同一个国家代码。

谷歌 GitHub 上的 libphonenumber 存储库中的一个插图表明,美利坚合众国、加拿大和加勒比海岛屿都使用相同的国际拨号代码 +1。

可以使用塞尔维亚、斯洛文尼亚或摩洛哥的国家代码从科索沃拨打这些电话号码。 这些只是识别或验证电话号码时的一些困难。

乍一看,似乎可以使用 RegEx 来验证电话号码的国家/地区代码。 然而,这表明要验证一个国家的代码,我们必须为全球每个国家创建一个唯一的 RegEx 规则。

此外,每个手机运营商都有指南(例如,某些数字只能在特定范围内使用)。 我们可以看到事情有可能迅速失控,这将使我们自己验证电话号码输入变得极其困难。


在 Python 中使用电话号码库

我们很幸运,因为 Python 库可以有效地指导我们完成验证过程。 该库源自 Google 的 libphonenumber 库,该库也可用于其他编程语言,如 C++、Java 和 JavaScript。

Python Phonenumbers 库是使用此库创建的。

本文将向我们展示如何使用 Python 验证手机号码。

在 Python 中安装电话号码库

得益于集成模块,使用 Python 可以轻松

要使用该模块,我们必须先安装它。 使用 pip,我们可以这样做:

pip install phonenumbers

安装模块后,我们可以验证国家代码电话号码。

现在一切都已设置,我们可以探索 Phonenumbers 库。


使用 Python Phonenumbers 库解析电话号码

电话号码几乎肯定是一个字符串,无论输入是来自 Web 表单还是其他来源,例如文本提取(本指南稍后将介绍)。 它需要用电话号码进行解析,然后转换为 PhoneNumber 实例,然后我们才能将其用于验证和其他目的。

导入库

首先,我们需要导入所需的库; 我们将导入电话号码。 我们还需要导入运营商、时区和地理编码器。

示例代码:

import phonenumbers

解析电话号码

借助 parse() 方法,我们可以从电话号码中提取有用的信息,包括以下内容:

示例代码:

import phonenumbers
My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)

使用 phonenumbers.parse() 函数时需要电话号码字符串作为输入。 我们可以提供 ISO Alpha-2 格式的国家信息作为额外的可选输入。

例如,请考虑以下代码:

Parse_number = phonenumbers.parse(My_number)

在 ISO Alpha-2 表示法中,RO 表示罗马尼亚。 我们可以使用此页面查找全球每个国家的 Alpha-2 和数字国家代码。

除非必要,否则大多数情况下将省略 ISO Alpha-2 国家/地区代码。

可以使用 phonenumbers.parse() 验证电话号码的长度、前导零和符号等常见问题。 请务必记住,如果不满足任何必需条件,此方法将抛出异常。

始终将其放在我们代码中的 try/catch 块中。

现在我们的电话号码已得到适当处理,我们可以进入验证阶段。


使用 is_possible_number() 方法验证电话号码

可以使用两种方法来验证 Phonenumbers 上的电话号码。 这些方法之间的主要区别在于它们各自的速度和准确性级别。

为了进一步解释这一点,让我们从 is_possible_number() 函数开始。

示例代码:

import phonenumbers
My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
print(phonenumbers.is_possible_number(Parse_number))

输出:

True

该程序将产生一个 True 值作为其输出。


使用 is_valid_number() 方法验证电话号码

现在,我们将使用相同的数字,但这次我们将使用 is_valid_number() 方法检查其有效性:

示例代码:

import phonenumbers
My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
print(phonenumbers.is_valid_number(Parse_number))

输出:

False

即使输入保持不变,输出也会不同。

is_possible_number() 通过检查其长度来猜测电话号码的有效性,而 is_valid_number() 方法检查其长度、前缀和区域。

phonenumbers.is_possible_number() 在遍历大型电话号码列表时比 phonenumbers.is_valid_number() 更快。 如图所示,这些结果并不总是准确的。

快速消除长电话号码很有帮助。 使用有风险。


使用 Geocoder 类中的 description_for_number() 方法查找电话号码位置

电话号码可以揭示有关其所有者的许多详细信息,其中一些可能与我们的研究相关。 由于与电话号码关联的特定运营商是影响产品总成本的一个因素,因此我们可能希望使用各种应用程序编程接口 (API) 或 API 端点。

我们可能希望根据客户所在的时区(电话号码)位置发送促销通知,这样我们就可以避免在半夜向他们发送消息。 这将防止我们不小心唤醒他们。

我们还可以获得有关电话号码位置的信息,以提供与情况相关的信息。 Phonenumbers 库使用户能够访问满足这些要求所需的工具。

我们将使用地理编码器类中可用的 description_for_number() 方法从位置开始。 参数是已解析的电话号码和语言的简称。

让我们用我们之前使用的假号码试试这个。

示例代码:

import phonenumbers
from phonenumbers import geocoder
My_number = phonenumbers.parse("+92333920000")
print("This number is from: "+geocoder.description_for_number(My_number, "en"))

输出:

This number is from: Pakistan

使用运营商类中的 name_for_number() 方法查找电话号码运营商

我们将使用运营商类中的 name_for_number() 方法。

示例代码:

import phonenumbers
from phonenumbers import carrier
My_number = phonenumbers.parse("+92333920000")
print("The carrier of the number is: "+carrier.name_for_number(My_number, "en"))

代码的输出:

The carrier of the number is: Ufone

使用 Python 验证电话号码并获取其他信息

示例代码:

import phonenumbers
from phonenumbers import carrier, timezone, geocoder
my_number = phonenumbers.parse("+92333920000", "GB")
print((phonenumbers.is_valid_number(my_number)))
print("The carrier of the number is: "+carrier.name_for_number(my_number, "en"))
print("The content and the city of the number are:")
print(timezone.time_zones_for_number(my_number))
print("The country this number belongs to is: "+geocoder.description_for_number(my_number, 'en'))

输出:

True
The carrier of the number is: Ufone
The content and the city of the number are:
('Asia/Karachi',)
The country this number belongs to is: Pakistan

这就是我们如何确定一个数字是否有效的方法。 我们在输出中看到 True,这表明 Python 代码中使用的数字是正确的。

我们还可以找出号码的载体。 在我们的例子中,它是 Ufone。

除了运营商,我们还可以找到国家、大陆和城市的名称。 

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 子进程捕获输出

发布时间:2023/06/15 浏览次数:136 分类:Python

The main aim of this article is to demonstrate how can the output of a subprocess be captured, stored and shown in Python.

Python获取CPU温度

发布时间:2023/06/15 浏览次数:111 分类:Python

The main aim of this article is to demonstrate how to read and show CPU temperature with the help of the pythonnet library in Python.

Python 从网页中提取表格

发布时间:2023/06/15 浏览次数:50 分类:Python

The main aim of this article is to demonstrate how tables can be extracted from a webpage using Pandas and lxml in Python.

Python Antigravity模块的用途

发布时间:2023/06/15 浏览次数:72 分类:Python

Python has an unserious, playful side to it. One such is the antigravity module. What is this module all about?

在代码中安装 Python 模块

发布时间:2023/06/15 浏览次数:72 分类:Python

There are more than one way to do things, we want to use this tutorial to learn how to use codes to install Python modules.

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便