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

时间:2016-03-22 05:34:52

标签: python phone-number libphonenumber phonenumberutils

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

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

并且想知道如果有任何可能的方法来匹配给定数字的2个字母区域以供进一步使用?

我尝试过这种方法,在自述文件中提到:

>>> 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 个答案:

答案 0 :(得分:2)

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

>>> 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)

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