2013-04-27 9 views

risposta

18

C'è un modulo chiamato pycountry.

Ecco un esempio di codice:

import pycountry 


input_countries = ['American Samoa', 'Canada', 'France'] 

countries = {} 
for country in pycountry.countries: 
    countries[country.name] = country.alpha2 

codes = [countries.get(country, 'Unknown code') for country in input_countries] 

print codes # prints [u'AS', u'CA', u'FR'] 
+4

Vale la pena ricordare che ora è anche possibile utilizzare il metodo 'get':' pycountry.countries.get (name = 'American Samoa'). Alpha2'. – Jir

+3

'alpha2' è stato rinominato in' alpha_2' – RiTu

+0

è buono, ma anche 9.2Mb! Così ho usato il csv menzionato da @Ashwini_Chaudhary con solo 9.6Kb – ThePhi

6

È possibile utilizzare questo file csv: country code list into a CSV.

In [41]: import csv 

In [42]: dic = {} 

In [43]: with open("wikipedia-iso-country-codes.csv") as f: 
    file= csv.DictReader(f, delimiter=',') 
    for line in file: 
     dic[line['English short name lower case']] = line['Alpha-2 code'] 
    ....:   

In [44]: countries = ['American Samoa', 'Canada', 'France'] 

In [45]: [dic[x] for x in countries] 
Out[45]: ['AS', 'CA', 'FR'] 

Pochi di più alternatives.

0

Ci sono alcune cose da considerare con il paese i nomi, soprattutto se li usando come chiavi di ricerca. Possono essere in Title Case (ciò che pensiamo sia normale) o in maiuscolo (da ISO 3166). I nomi che includono virgole o apostrofi potrebbero dover essere racchiusi tra virgolette. Alcuni nomi hanno lettere con accenti (quindi non ASCII). Tuttavia, potrebbe esserci una combinazione che funziona per te allo http://www.dataphyx.com/countrynames/ dove puoi ottenere elenchi CSV di nomi ISO/ID in vari formati.

4

Di seguito è riportato un dizionario che associa i nomi dei paesi ai relativi codici in ISO 3166-1 alpha-2. Puoi usarlo per questo scopo. A meno che tu non voglia essere avventuroso, usare pycountry è un'idea migliore.

{'Afghanistan': 'AF', 
'Albania': 'AL', 
'Algeria': 'DZ', 
'American Samoa': 'AS', 
'Andorra': 'AD', 
'Angola': 'AO', 
'Anguilla': 'AI', 
'Antarctica': 'AQ', 
'Antigua and Barbuda': 'AG', 
'Argentina': 'AR', 
'Armenia': 'AM', 
'Aruba': 'AW', 
'Australia': 'AU', 
'Austria': 'AT', 
'Azerbaijan': 'AZ', 
'Bahamas': 'BS', 
'Bahrain': 'BH', 
'Bangladesh': 'BD', 
'Barbados': 'BB', 
'Belarus': 'BY', 
'Belgium': 'BE', 
'Belize': 'BZ', 
'Benin': 'BJ', 
'Bermuda': 'BM', 
'Bhutan': 'BT', 
'Bolivia, Plurinational State of': 'BO', 
'Bonaire, Sint Eustatius and Saba': 'BQ', 
'Bosnia and Herzegovina': 'BA', 
'Botswana': 'BW', 
'Bouvet Island': 'BV', 
'Brazil': 'BR', 
'British Indian Ocean Territory': 'IO', 
'Brunei Darussalam': 'BN', 
'Bulgaria': 'BG', 
'Burkina Faso': 'BF', 
'Burundi': 'BI', 
'Cambodia': 'KH', 
'Cameroon': 'CM', 
'Canada': 'CA', 
'Cape Verde': 'CV', 
'Cayman Islands': 'KY', 
'Central African Republic': 'CF', 
'Chad': 'TD', 
'Chile': 'CL', 
'China': 'CN', 
'Christmas Island': 'CX', 
'Cocos (Keeling) Islands': 'CC', 
'Colombia': 'CO', 
'Comoros': 'KM', 
'Congo': 'CG', 
'Congo, the Democratic Republic of the': 'CD', 
'Cook Islands': 'CK', 
'Costa Rica': 'CR', 
'Country name': 'Code', 
'Croatia': 'HR', 
'Cuba': 'CU', 
'Curaçao': 'CW', 
'Cyprus': 'CY', 
'Czech Republic': 'CZ', 
"Côte d'Ivoire": 'CI', 
'Denmark': 'DK', 
'Djibouti': 'DJ', 
'Dominica': 'DM', 
'Dominican Republic': 'DO', 
'Ecuador': 'EC', 
'Egypt': 'EG', 
'El Salvador': 'SV', 
'Equatorial Guinea': 'GQ', 
'Eritrea': 'ER', 
'Estonia': 'EE', 
'Ethiopia': 'ET', 
'Falkland Islands (Malvinas)': 'FK', 
'Faroe Islands': 'FO', 
'Fiji': 'FJ', 
'Finland': 'FI', 
'France': 'FR', 
'French Guiana': 'GF', 
'French Polynesia': 'PF', 
'French Southern Territories': 'TF', 
'Gabon': 'GA', 
'Gambia': 'GM', 
'Georgia': 'GE', 
'Germany': 'DE', 
'Ghana': 'GH', 
'Gibraltar': 'GI', 
'Greece': 'GR', 
'Greenland': 'GL', 
'Grenada': 'GD', 
'Guadeloupe': 'GP', 
'Guam': 'GU', 
'Guatemala': 'GT', 
'Guernsey': 'GG', 
'Guinea': 'GN', 
'Guinea-Bissau': 'GW', 
'Guyana': 'GY', 
'Haiti': 'HT', 
'Heard Island and McDonald Islands': 'HM', 
'Holy See (Vatican City State)': 'VA', 
'Honduras': 'HN', 
'Hong Kong': 'HK', 
'Hungary': 'HU', 
'ISO 3166-2:GB': '(.uk)', 
'Iceland': 'IS', 
'India': 'IN', 
'Indonesia': 'ID', 
'Iran, Islamic Republic of': 'IR', 
'Iraq': 'IQ', 
'Ireland': 'IE', 
'Isle of Man': 'IM', 
'Israel': 'IL', 
'Italy': 'IT', 
'Jamaica': 'JM', 
'Japan': 'JP', 
'Jersey': 'JE', 
'Jordan': 'JO', 
'Kazakhstan': 'KZ', 
'Kenya': 'KE', 
'Kiribati': 'KI', 
"Korea, Democratic People's Republic of": 'KP', 
'Korea, Republic of': 'KR', 
'Kuwait': 'KW', 
'Kyrgyzstan': 'KG', 
"Lao People's Democratic Republic": 'LA', 
'Latvia': 'LV', 
'Lebanon': 'LB', 
'Lesotho': 'LS', 
'Liberia': 'LR', 
'Libya': 'LY', 
'Liechtenstein': 'LI', 
'Lithuania': 'LT', 
'Luxembourg': 'LU', 
'Macao': 'MO', 
'Macedonia, the former Yugoslav Republic of': 'MK', 
'Madagascar': 'MG', 
'Malawi': 'MW', 
'Malaysia': 'MY', 
'Maldives': 'MV', 
'Mali': 'ML', 
'Malta': 'MT', 
'Marshall Islands': 'MH', 
'Martinique': 'MQ', 
'Mauritania': 'MR', 
'Mauritius': 'MU', 
'Mayotte': 'YT', 
'Mexico': 'MX', 
'Micronesia, Federated States of': 'FM', 
'Moldova, Republic of': 'MD', 
'Monaco': 'MC', 
'Mongolia': 'MN', 
'Montenegro': 'ME', 
'Montserrat': 'MS', 
'Morocco': 'MA', 
'Mozambique': 'MZ', 
'Myanmar': 'MM', 
'Namibia': 'NA', 
'Nauru': 'NR', 
'Nepal': 'NP', 
'Netherlands': 'NL', 
'New Caledonia': 'NC', 
'New Zealand': 'NZ', 
'Nicaragua': 'NI', 
'Niger': 'NE', 
'Nigeria': 'NG', 
'Niue': 'NU', 
'Norfolk Island': 'NF', 
'Northern Mariana Islands': 'MP', 
'Norway': 'NO', 
'Oman': 'OM', 
'Pakistan': 'PK', 
'Palau': 'PW', 
'Palestine, State of': 'PS', 
'Panama': 'PA', 
'Papua New Guinea': 'PG', 
'Paraguay': 'PY', 
'Peru': 'PE', 
'Philippines': 'PH', 
'Pitcairn': 'PN', 
'Poland': 'PL', 
'Portugal': 'PT', 
'Puerto Rico': 'PR', 
'Qatar': 'QA', 
'Romania': 'RO', 
'Russian Federation': 'RU', 
'Rwanda': 'RW', 
'Réunion': 'RE', 
'Saint Barthélemy': 'BL', 
'Saint Helena, Ascension and Tristan da Cunha': 'SH', 
'Saint Kitts and Nevis': 'KN', 
'Saint Lucia': 'LC', 
'Saint Martin (French part)': 'MF', 
'Saint Pierre and Miquelon': 'PM', 
'Saint Vincent and the Grenadines': 'VC', 
'Samoa': 'WS', 
'San Marino': 'SM', 
'Sao Tome and Principe': 'ST', 
'Saudi Arabia': 'SA', 
'Senegal': 'SN', 
'Serbia': 'RS', 
'Seychelles': 'SC', 
'Sierra Leone': 'SL', 
'Singapore': 'SG', 
'Sint Maarten (Dutch part)': 'SX', 
'Slovakia': 'SK', 
'Slovenia': 'SI', 
'Solomon Islands': 'SB', 
'Somalia': 'SO', 
'South Africa': 'ZA', 
'South Georgia and the South Sandwich Islands': 'GS', 
'South Sudan': 'SS', 
'Spain': 'ES', 
'Sri Lanka': 'LK', 
'Sudan': 'SD', 
'Suriname': 'SR', 
'Svalbard and Jan Mayen': 'SJ', 
'Swaziland': 'SZ', 
'Sweden': 'SE', 
'Switzerland': 'CH', 
'Syrian Arab Republic': 'SY', 
'Taiwan, Province of China': 'TW', 
'Tajikistan': 'TJ', 
'Tanzania, United Republic of': 'TZ', 
'Thailand': 'TH', 
'Timor-Leste': 'TL', 
'Togo': 'TG', 
'Tokelau': 'TK', 
'Tonga': 'TO', 
'Trinidad and Tobago': 'TT', 
'Tunisia': 'TN', 
'Turkey': 'TR', 
'Turkmenistan': 'TM', 
'Turks and Caicos Islands': 'TC', 
'Tuvalu': 'TV', 
'Uganda': 'UG', 
'Ukraine': 'UA', 
'United Arab Emirates': 'AE', 
'United Kingdom': 'GB', 
'United States': 'US', 
'United States Minor Outlying Islands': 'UM', 
'Uruguay': 'UY', 
'Uzbekistan': 'UZ', 
'Vanuatu': 'VU', 
'Venezuela, Bolivarian Republic of': 'VE', 
'Viet Nam': 'VN', 
'Virgin Islands, British': 'VG', 
'Virgin Islands, U.S.': 'VI', 
'Wallis and Futuna': 'WF', 
'Western Sahara': 'EH', 
'Yemen': 'YE', 
'Zambia': 'ZM', 
'Zimbabwe': 'ZW', 
'Åland Islands': 'AX'} 
0

Per coloro che utilizzano ISO 3166-1 codici paese, essi non saranno più liberamente disponinile da ISO dopo 20 Febbraio, 2014 vedono il loro avviso: http://www.iso.org/iso/home/standards/country_codes/country-codes_new-product-info

Ci sono un sacco di versioni archiviate su la rete. Ho inserito copie (2/15/2014) delle versioni inglese e francese txt e xml qui: http://www.opengeocode.org/archive.php

+0

Questo sembra fuorviante; il sito dice "Tutti i codici sono ora disponibili su [Online Browsing Platform (OBP)] (https://www.iso.org/obp/). Le informazioni sull'OBP sono sempre aggiornate e puoi iscriviti per ricevere notifiche quando vengono apportate modifiche Questa funzionalità di notifica sostituisce la newsletter ISO 3166. " Sembrano ancora liberi, hanno appena cambiato il formato. –

+0

@NickT - Le cose cambiano in 2 anni (hehe). Sì, ora puoi ottenere un dump della tabella da ISO. Non ho tracciato quando hanno fatto il cambiamento, ma in effetti hanno abbandonato la pratica di farti 'comprare i codici' e sono di nuovo liberamente disponibili. –

Problemi correlati