Python Phonenumbers 模块2025年3月17日 | 阅读 10 分钟 每当我们看到陌生的电话号码或接到陌生号码的电话时,一些基本问题就会浮现在脑海中,包括谁在打电话,从哪里打电话,电话号码的地区,电话号码是否有效等等。如果我们要手动找出所有这些问题的答案,这将需要一些时间,因为我们无法一次性执行所有操作。例如,要了解电话号码的地区,我们必须了解每个国家的国家代码,这在实践中是不可能的(除了少数例外)。同样,如果我们要手动检查给定的电话号码是否有效,那么我们必须拨打该号码,如果我们有成百上千个这样的号码,该怎么办。因此,手动执行此类操作非常麻烦且耗时,这就是为什么我们必须寻找替代解决方案。许多编程语言为我们提供了扩展或包来对给定的电话号码执行这些操作。 Python,作为最流行的编程语言之一,为我们提供了 phonenumbers 模块,它对我们通过程序执行所有此类操作非常有帮助。因此,在本教程中,我们将学习 Python 的 phonenumbers 模块,并通过在示例程序中使用此模块来执行多项此类操作。 Python Phonenumbers 模块介绍Phonenumbers 是一个 Python 模块,它具有多种功能,例如解析电话号码等。Python 的 Phonenumbers 模块具有多种函数,能够对给定的电话号码执行各种操作,例如查找电话号码的地区、电话号码的运营商等。我们可以在 Python 程序中通过导入此模块来使用 phonenumbers 模块的函数,然后我们可以使用这些函数对给定的电话号码执行所需的操作。Phonenumbers 模块在许多方面对我们非常有帮助,其中包括以下几个优点:
这些是在 Python 程序中使用 phonenumbers 模块的几个突出优点。在本教程中,我们将通过示例程序对给定电话号码执行多项此类操作,从而了解 phonenumbers 模块的实现。我们还将在此部分中执行 phonenumbers 模块的安装过程。 Python Phonenumbers 模块:安装Phonenumbers 不是 Python 的内置包(它不会随 Python 安装一起安装),这就是为什么如果此模块尚未存在于我们的系统中,我们必须安装此模块。我们应该首先确保 phonenumbers 模块已安装在系统中,否则我们将无法在没有此模块的情况下进行实现。如果 phonenumbers 模块未安装在我们的系统中,我们有多种方法可以安装此模块,在所有可能的安装方法中,使用 pip 安装程序安装 phonenumbers 模块是最简单、最容易的。这就是为什么我们将在本教程中使用 pip 安装程序在我们的系统中安装 phonenumbers 模块,并且在此方法中,我们将使用以下 pip 安装程序命令: 我们必须在命令提示符终端 shell 中输入上述命令,输入命令后,我们必须按回车键,这样 pip 安装程序将开始在我们的系统中安装此模块。一旦此模块的安装过程开始,它将需要一段时间才能在我们的系统中成功安装该模块,在此期间我们必须等待。 ![]() 正如我们所看到的,屏幕上显示了“成功安装”消息,这意味着 phonenumbers 模块现已成功安装在我们的系统中。现在,我们可以通过将其导入到示例 Python 程序中并理解其实现来开始使用 phonenumbers 模块。 Python Phonenumbers 模块:实现正如我们已经讨论过的,我们可以使用 phonenumbers 模块的函数在 Python 程序中执行多项操作。我们将在此部分中使用 phonenumbers 模块的函数执行多项此类操作,以理解此模块的实现。我们将使用 phonenumbers 模块的函数执行以下操作来理解其实现:
我们将在此部分中通过在示例程序中使用 phonenumbers 模块的函数来执行上述所有操作,以理解其实现和工作原理。 应用 1:了解电话号码的地区我们可以了解给定电话号码的地区,即我们可以找出给定电话号码属于哪个国家或哪个地区。phonenumbers 模块的 Geocoder 库为我们提供了 description_for_number() 函数,我们可以使用它来找出给定电话号码的地区。我们可以通过将电话号码作为参数传递到函数中来使用它,然后我们可以在输出中打印电话号码的地区作为结果。我们可以通过以下示例程序来理解 phonenumbers 模块的 description_for_number() 函数的实现。 示例 1:查看以下程序,其中我们在输出中打印了给定电话号码的地区 输出 The region of the given phone number is: India 正如我们所看到的,给定电话号码的地区已打印在输出中,这就是我们可以找出并打印任何给定电话号码地区的方式。出于安全和个人原因,我们已隐藏示例中使用的电话号码的最后六位数字。 说明 导入 phonenumbers 模块为 pt 后,我们导入了 phonenumbers 模块的 geocoder 库为 gc。之后,我们解析了给定的电话号码并将结果存储在初始化的变量 (givenPN) 中,以便将其用作 description_for_number() 函数的参数。然后,我们将解析后的数字变量在 description_for_number() 中用作参数,并将结果存储在第二个初始化的变量中。在 description_for_number() 函数中,我们还使用了“en”语言来指定英语以进行打印和存储结果。最后,我们通过在 print 语句中使用 regionOfPN 变量在输出中打印了结果。 应用 2:查找给定电话号码的运营商我们甚至可以使用 phonenumbers 模块找出给定电话号码属于哪个 SIM 卡运营商。phonenumbers 模块的 carrier 库为我们提供了使用 name_for_number() 函数查找电话号码运营商的选项。在 carrier 库的 name_for_number() 函数中,我们必须将解析后的电话号码用作参数,然后我们可以在输出中打印给定电话号码的运营商。我们可以通过以下示例程序来理解 phonenumbers 模块的 name_for_number() 函数的实现。 示例 2:查看以下 Python 程序,其中我们打印了给定电话号码的 SIM 卡运营商 输出 The SIM Card operator or carrier of the given phone number is: Tata Docomo 正如我们所看到的,给定电话号码的运营商已打印在输出中,这就是我们可以找出并打印任何给定电话号码的 SIM 卡运营商的方式。 说明 我们已在 name_for_number() 函数中使用解析后的电话号码变量来查找运营商,最后,我们通过在 print 语句中使用结果变量(即 carrierOfPN 变量)在输出中打印了程序的结果。 应用 3:解析给定电话号码解析给定电话号码意味着根据 phonenumbers 模块格式设置给定电话号码。我们可以使用 phonenumbers 模块的 parse() 函数通过在函数中提供电话号码作为参数来执行此操作。该函数将通过在输出中提供 phonenumbers 格式的给定电话号码来生成结果。我们可以通过以下示例程序来理解此 parse() 函数的使用,在该程序中我们解析一个给定的电话号码。 示例 3:查看以下程序,其中我们使用了 parse() 函数来解析电话号码 输出 The given phone number after parsed will look like as the following format: Country Code: 91 National Number: 9034xxxxxx 正如我们所看到的,我们已在程序中解析了给定的电话号码,我们可以使用此 parse 函数来解析参数中给定的任何电话号码。 注意:我们必须记住,作为 parse() 函数参数的给定电话号码应包含其国家代码。应用 4:获取给定电话号码地区的时区我们甚至可以简单地从给定电话号码中获取给定电话号码所属区域的时区。我们可以使用 phonenumbers 模块执行此任务,因为 phonenumbers 模块为我们提供了时区库,用于查找给定电话号码区域的时区。phonenumbers 模块的时区库为我们提供了 time_zones_for_number() 函数,我们可以使用它来查找电话号码的时区。我们只需将解析后的电话号码作为参数传递到 time_zones_for_number() 中,因此,我们可以找出电话号码的时区并在输出中打印结果。我们可以通过以下示例程序来理解 phonenumbers 模块的 time_zones_for_number() 函数的实现。 示例 4:查看以下 Python 程序,其中我们在输出中打印了给定电话号码的时区 输出 The timezone of the given phone number is: ('Asia/Calcutta',) 正如我们所看到的,给定电话号码的时区已打印在输出中,这就是我们可以找出并打印任何给定电话号码时区的方式。 应用 5:匹配和提取电话号码有时我们有多个电话号码,我们必须从中找出特定国家代码或地区的电话号码。如果手动执行此操作,将花费大量时间,但借助 phonenumbers 模块可以节省大量时间。Phonenumbers 模块为我们提供了 PhoneNumberMatcher 对象,该对象具有执行电话号码匹配任务的相关函数。我们可以将 PhoneNumberMatcher() 函数与一些给定的电话号码一起使用,以筛选出所需的电话号码,然后我们可以在输出中打印它们。我们可以借助以下示例程序来理解 phonenumbers 模块的此实现: 示例 5:查看以下 Python 程序,其中我们对给定的电话号码执行了提取和匹配操作 输出 PhoneNumberMatch [23,36) +919034xxxxxx 正如我们所看到的,我们从给定的示例文本中提取了特定地区(本例中为印度)的电话号码并将其打印在输出中。这就是我们可以使用 PhoneNumberMatcher 对象从给定文本中匹配和提取特定电话号码的方式。 说明 在定义示例文本(其中我们提到了两个不同地区的电话号码)后,我们在 PhoneNumberMatcher() 函数中使用此 sampleText 变量和“IN”参数,以便它将从示例文本中找出印度地区的电话号码。之后,我们使用 for 循环遍历 resultPN 变量,在输出中打印此搜索的结果。 应用 6:验证电话号码我们甚至可以使用 phonenumbers 模块检查给定电话号码是否有效。除此之外,我们还可以检查给定号码是否可能。为了执行这两个任务,phonenumbers 为我们提供了两个不同的函数,即 is_valid_number() 和 is_possible_number()。我们可以使用这些函数通过在这些函数中提供解析后的电话号码作为参数来确定给定电话号码的验证和可能性。我们可以通过以下示例程序来理解这两个函数的实现。 示例 6:查看以下程序,其中我们验证并检查了给定号码的可能性 输出 Is the given phone number is valid?: True Is the given phone number is possible?: True 正如我们所看到的,给定号码的验证和可能性已打印在输出中,这就是我们可以验证和检查任何给定电话号码可能性的方式。 |
我们请求您订阅我们的新闻通讯以获取最新更新。