我使用过2个python库:phonenumbers,pycountry。我实际上找不到一种方法来只提供国家代码并获得相应的国家名称。
在phonenumbers
中,您需要为parse
提供完整的数字。在pycountry
中,它只是获得国家ISO。
是否有解决方案或方法以任何方式提供图书馆国家/地区代码并获取国家/地区名称?
答案 0 :(得分:19)
phonenumbers
库文档资料不足;相反,他们建议您查看最初的Google项目以进行单元测试,以了解功能。
PhoneNumberUtilTest
unittests似乎涵盖了您的具体用例;使用getRegionCodeForCountryCode()
function将电话号码的国家/地区部分映射到给定区域。还有getRegionCodeForNumber()
function似乎首先提取已解析数字的国家/地区代码属性。
事实上,在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))
演示:
>>> 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
属性只是一个整数,因此您可以在没有电话号码的情况下使用phonenumbers.phonenumberutil.region_code_for_country_code()
,只需使用国家/地区代码:
>>> region_code_for_country_code(1)
'US'
>>> region_code_for_country_code(44)
'GB'
答案 1 :(得分:0)
小写字母-您还可以通过字符串代码获取国家/地区前缀。例如:
from phonenumbers.phonenumberutil import country_code_for_region
print(country_code_for_region('RU'))
print(country_code_for_region('DE'))