Получить название страны из кода страны в 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'))