从python中的国家代码获取国家/地区名称?

时间:2016-07-24 12:20:39

标签: python phone-number

我使用过2个python库:phonenumberspycountry。我实际上找不到一种方法来只提供国家代码并获得相应的国家名称。

phonenumbers中,您需要为parse提供完整的数字。在pycountry中,它只是获得国家ISO。

是否有解决方案或方法以任何方式提供图书馆国家/地区代码并获取国家/地区名称?

2 个答案:

答案 0 :(得分:19)

phonenumbers库文档资料不足;相反,他们建议您查看最初的Google项目以进行单元测试,以了解功能。

PhoneNumberUtilTest unittests似乎涵盖了您的具体用例;使用getRegionCodeForCountryCode() function将电话号码的国家/地区部分映射到给定区域。还有getRegionCodeForNumber() function似乎首先提取已解析数字的国家/地区代码属性。

事实上,在Python中也有相应的phonenumbers.phonenumberutil.region_code_for_country_code()phonenumbers.phonenumberutil.region_code_for_number()函数来做同样的事情:

import phonenumbers
from phonenumbers.phonenumberutil import (
    region_code_for_country_code,
    region_code_for_number,
)

pn = phonenumbers.parse('+442083661177')
print(region_code_for_country_code(pn.country_code))

演示:

>>> import phonenumbers
>>> from phonenumbers.phonenumberutil import region_code_for_country_code
>>> from phonenumbers.phonenumberutil import region_code_for_number
>>> pn = phonenumbers.parse('+442083661177')
>>> print(region_code_for_country_code(pn.country_code))
GB
>>> print(region_code_for_number(pn))
GB

生成的区域代码是一个2个字母的ISO代码,因此您可以直接在pycountry中使用它:

>>> import pycountry
>>> country = pycountry.countries.get(alpha_2=region_code_for_number(pn))
>>> print(country.name)
United Kingdom

请注意,.country_code属性只是一个整数,因此您可以在没有电话号码的情况下使用phonenumbers.phonenumberutil.region_code_for_country_code(),只需使用国家/地区代码:

>>> region_code_for_country_code(1)
'US'
>>> region_code_for_country_code(44)
'GB'

答案 1 :(得分:0)

小写字母-您还可以通过字符串代码获取国家/地区前缀。例如:

from phonenumbers.phonenumberutil import country_code_for_region

print(country_code_for_region('RU'))
print(country_code_for_region('DE'))