是否可以使用python-phonenumbers或另一個python lib從兩個字母的國家代碼(ISO 3166-1 alpha-2)獲取國家代碼?從python的國家代碼中獲取電話號碼的國際前綴
在phonenumbers
LIB重點從數量提取國家代碼的例子,但我想反其道而行之,是這樣的:
"US" -> "1"
"GB" -> "44"
"CL" -> "56"
是否可以使用python-phonenumbers或另一個python lib從兩個字母的國家代碼(ISO 3166-1 alpha-2)獲取國家代碼?從python的國家代碼中獲取電話號碼的國際前綴
在phonenumbers
LIB重點從數量提取國家代碼的例子,但我想反其道而行之,是這樣的:
"US" -> "1"
"GB" -> "44"
"CL" -> "56"
我不知道這個任何python lib,但是here'sa csv與所有ISO 3166-1 alpha-2代碼和它們的數字前綴,從它那裏查看它應該是微不足道的:
import csv
country_to_prefix = {}
with open("countrylist.csv") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
country_to_prefix[row["ISO 3166-1 2 Letter Code"]] = row["ITU-T Telephone Code"]
print country_to_prefix["US"] # +1
print country_to_prefix["GB"] # +44
print country_to_prefix["CL"] # +56
編輯:上述鏈接已經關閉,但我在Github上找到repository with that data (and more)。
使用lib。
In [1]: from phonenumbers import COUNTRY_CODE_TO_REGION_CODE
In [2]: COUNTRY_CODE_TO_REGION_CODE
Out[2]:
{1: ('US',
'AG',
'AI',
....
7: ('RU', 'KZ'),
20: ('EG',),
27: ('ZA',),
30: ('GR',),
31: ('NL',),
32: ('BE',),
33: ('FR',),
34: ('ES',),
36: ('HU',),
39: ('IT', 'VA'),
40: ('RO',),
... snip.
最後:
from phonenumbers import COUNTRY_CODE_TO_REGION_CODE, REGION_CODE_FOR_NON_GEO_ENTITY
REGION_CODE_TO_COUNTRY_CODE = {}
for country_code, region_codes in COUNTRY_CODE_TO_REGION_CODE.items():
for region_code in region_codes:
if region_code == REGION_CODE_FOR_NON_GEO_ENTITY:
continue
if region_code in REGION_CODE_TO_COUNTRY_CODE:
raise ValueError("%r is already in the country code list" % region_code)
REGION_CODE_TO_COUNTRY_CODE[region_code] = str(country_code)
以下功能會給你從提供的ISO代碼調用代碼:
def get_calling_code(iso):
for code, isos in COUNTRY_CODE_TO_REGION_CODE.items():
if iso.upper() in isos:
return code
return None
它給你:
get_calling_code('US')
>> 1
get_calling_code('GB')
>> 44
你可以看看通過解析表來創建一個字典在下面的頁面中,儘管您必須從國家字母代碼列中切出前兩個字符 - https://countrycode.org/ – thefragileomen
如果您查看以下頁面上的__Example Usage__:[link](https:// github .com/daviddrysdale/python-phonenumbers)你可以看到一些例子,解析和國家代碼給出了電話號碼 – sshashank124
這不是一個真正的編程問題。這是一個資源問題。你可以解析維基百科http://en.wikipedia.org/wiki/List_of_country_calling_codes http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 –