获取python phonenumbers 库中数字的匹配区域

Posted

技术标签:

【中文标题】获取python phonenumbers 库中数字的匹配区域【英文标题】:Get matched region for a number in python's phonenumbers library 【发布时间】:2016-03-22 05:34:51 【问题描述】:

我正在使用 python 的 phonenumbers 库来解析和验证这样的数字:

>> import phonenumbers
>>> x = phonenumbers.parse("+442083661177")
>>> print x
Country Code: 44 National Number: 2083661177 Leading Zero: False

并且想知道是否有任何可能的方法来获得匹配的 2 字母 Region 给定数字以供进一步使用?

这个方法我试过了,Readme里有提到:

>>> from phonenumbers import timezone
>>> gb_number = phonenumbers.parse("+447986123456")
>>> list(timezone.time_zones_for_number(gb_number))
['Europe/London']

但问题是我找不到使用这些时区解析另一个数字的方法。 (phonenumbers.parse("07986123456", 'Europe/London') 会抛出异常)

【问题讨论】:

【参考方案1】:

您需要先获取国家/地区代码而不是时区:

>>> gb_number = phonenumbers.parse("+447986123456")
>>> cc = phonenumbers.region_code_for_number(gb_number)
>>> cc
'GB'
>>> phonenumbers.parse("07986123456", cc)
PhoneNumber(country_code=44, national_number=7986123456, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=None, preferred_domestic_carrier_code=None)

这是因为许多国家的拨号代码不同,但时区相同。

【讨论】:

以上是关于获取python phonenumbers 库中数字的匹配区域的主要内容,如果未能解决你的问题,请参考以下文章

Python phonenumber 正则表达式不够好

呼叫连接或挂断上的 Twilio 获取呼叫详细信息

Scala - 将字符串数组转换为Set [PhoneNumbers]

如何设置 Twilio To phoneNumber 获取此号码作为 Spring Boot 中的用户输入

分组问题,32个数分8组,每组中数不能有相同的,请用python编程?

重启后用户 phoneNumber 属性为零