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

ALH*_*ALH 11 python phone-number

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

phonenumbers你需要提供完整的数字parse.在pycountry它只是获得国家ISO.

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

Mar*_*ers 24

phonenumbers库是相当不足的记录; 相反,他们建议您查看原始Google项目以进行单元测试以了解功能.

PhoneNumberUtilTest单元测试似乎涵盖您的具体使用情况; 使用该getRegionCodeForCountryCode()功能将电话号码的国家部分映射到给定区域.还有一个getRegionCodeForNumber()函数似乎首先提取已解析数字的国家/地区代码属性.

事实上,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))
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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
Run Code Online (Sandbox Code Playgroud)

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

>>> import pycountry
>>> country = pycountry.countries.get(alpha_2=region_code_for_number(pn))
>>> print(country.name)
United Kingdom
Run Code Online (Sandbox Code Playgroud)

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

>>> region_code_for_country_code(1)
'US'
>>> region_code_for_country_code(44)
'GB'
Run Code Online (Sandbox Code Playgroud)