Получить название страны из кода страны в python?

Я работал с 2 библиотеками python:номера телефонов, pycountry. Я действительно не мог найти способ дать только код страны и получить соответствующее название страны.

на phonenumbers вам нужно предоставить полные номера parse. В pycountry это просто получить страну ISO.

есть ли решение или метод каким-либо образом дать код страны библиотеки и получить название страны?

2 ответов


на phonenumbers библиотека довольно недокументирована; вместо этого они советуют вам посмотреть на оригинальный проект Google для unittests, чтобы узнать о функциональности.

на PhoneNumberUtilTest unit-тестов кажется, охватывает ваш конкретный случай использования; отображение части страны телефонного номера в данный регион, используя getRegionCodeForCountryCode() функции. Существует также getRegionCodeForNumber() функции который, как представляется, извлекает атрибут кода страны анализируемого номер первый.

и действительно, есть соответствующие phonenumbers.phonenumberutil.region_code_for_country_code() и phonenumbers.phonenumberutil.region_code_for_number() функции, чтобы сделать то же самое в Python:

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(alpha2=region_code_for_number(pn))
>>> print(country.name)
United Kingdom

отметим, что и просто целое число, так что вы можете использовать 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'))