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

Get country name from Country code in python?

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

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

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

phonenumbers 库的文档相当少;相反,他们建议您查看单元测试的原始 Google 项目以了解功能。

出现的PhoneNumberUtilTest unittests seems to cover your specific use-case; mapping the country portion of a phone number to a given region, using the getRegionCodeForCountryCode() function. There is also a getRegionCodeForNumber() function先提取解析号码的国家码属性

事实上,在 Python:

中有相应的 phonenumbers.phonenumberutil.region_code_for_country_code() and 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 属性 只是一个整数 ,因此您可以使用没有 phone 数字的 phonenumbers.phonenumberutil.region_code_for_country_code(),只是一个国家/地区代码:

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

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

from phonenumbers.phonenumberutil import country_code_for_region

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

不知道为什么到目前为止还没有人写过关于 phone-iso3166 的文章,但实际上这是有效的:

>>> from phone_iso3166.country import *
>>> phone_country(45)
'DK'
>>> phone_country('+1 202-456-1111')
'US'
>>> phone_country(14412921234)
'BM'