I have worked with 2 python libraries: phonenumbers, pycountry. I actually could not find a way to give just country code and get its corresponding country name.
In phonenumbers
you need to provide full numbers to parse
. In pycountry
it just get country ISO.
Is there a solution or a method in any way to give the library country code and get country name?
The phonenumbers
library is rather under-documented; instead they advice you to look at the original Google project for unittests to learn about functionality.
The 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 that appears to extract the country code attribute of a parsed number first.
And indeed, there are corresponding phonenumbers.phonenumberutil.region_code_for_country_code()
and phonenumbers.phonenumberutil.region_code_for_number()
functions to do the same in 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))
Demo:
>>> 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
The resulting region code is a 2-letter ISO code, so you can use that directly in pycountry
:
>>> import pycountry
>>> country = pycountry.countries.get(alpha_2=region_code_for_number(pn))
>>> print(country.name)
United Kingdom
Note that the .country_code
attribute is just an integer, so you can use phonenumbers.phonenumberutil.region_code_for_country_code()
without a phone number, just a country code:
>>> region_code_for_country_code(1)
'US'
>>> region_code_for_country_code(44)
'GB'
Small addition - you also can get country prefix by string code. E.g.:
from phonenumbers.phonenumberutil import country_code_for_region
print(country_code_for_region('RU'))
print(country_code_for_region('DE'))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With