在 python 的电话号码库中获取号码的匹配区域

Get matched region for a number in python's phonenumbers library

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

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

并且想知道是否有任何可能的方法来获得匹配的 2-letter 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')会抛出异常)

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

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

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