Vous recherchez la liste complète des codes de pays ISO ALPHA-2 et ISO ALPHA-3?


23

Je recherche une liste complète des pays avec leurs codes de pays .

Comme sur cette page (besoin complet et valide):

http://www.nationsonline.org/oneworld/country_code_list.htm


La distribution Perl Locale :: Codes est très complète et activement maintenue.
Dave Baird

Si ce sont des données ouvertes que vous recherchez, je pense que l'endroit à demander est l' Open Data Stack Exchange.
PolyGeo

Réponses:


31

Le site officiel ISO 3166-1 est probablement la source la plus à jour pour les codes à deux lettres. Malheureusement, ils n'ont pas l'alpha-3 en ligne, citant leur site :

Où puis-je trouver le code de pays ISO 3166-1 alpha-3 en téléchargement gratuit sur le site Web ISO 3166 / MA?

Nulle part. Le code alpha-3 n'est pas mis à disposition gratuitement. Vous pouvez acheter la norme internationale ISO 3166-1 dans notre magasin ISO. Il contient le code à trois lettres.

Un peu étrange à l'ère d'Internet, mais heureusement, il y a un article Wikipédia avec la liste complète et un document officiel de l'ONU qui couvre le sujet, avec des codes de pays .

Mise à jour:

Il existe une liste sur le site de la CIA avec FIPS 10, ISO 3166 Alpha2, ISO 3166 Alpha3, STANAG et Internet TLD (par exemple, .il ou .uk).

Résumé du lien :

Notez que cette liste contient des entités non nationales comme Antartica.


2
Cette réponse est maintenant 100% utile car le premier lien, le site officiel, fournit désormais également le code alpha-3 gratuitement dans un tableau copypastable bien formaté.
Dirk van Bergen du

@DirkvanBergen C'est une belle décision, mais leur tableau est loin d'être bien formaté. Pagination de 10 pages, pas de lien CSV.
Adam Matan

4
Utilisez le lien à gauche pour afficher uniquement les codes attribués, puis définissez la page pour afficher 300 et vous avez tout, copiez-collez pour exceller et (ab) utilisez-le de la manière que vous souhaitez.
Dirk van Bergen

14

Si vous souhaitez mettre à jour périodiquement votre liste, vous pouvez gratter l'une des sources et analyser ses résultats dans un format utile. Je l'ai fait ici pour convertir la liste des codes de pays Wikipedia en CSV :

import csv
import urllib2
from BeautifulSoup import BeautifulSoup

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]

url = 'http://en.wikipedia.org/wiki/ISO_3166-1'

page = opener.open(url)
soup = BeautifulSoup(page.read())

# "Current Codes" is second table on the page
t = soup.findAll('table', {'class' : 'wikitable sortable'})[1]

# create a new CSV for the output
iso_csv = csv.writer(open('wikipedia-iso-country-codes.csv', 'w'))

# get the header rows, write to the CSV
iso_csv.writerow([th.findAll(text=True)[0] for th in t.findAll('th')])

# Iterate over the table pulling out the country table results. Skip the first 
# row as it contains the already-parsed header information.
for row in t.findAll("tr")[1:]:
    tds = row.findAll('td')
    raw_cols = [td.findAll(text=True) for td in tds]
    cols = []
    # country field contains differing numbers of elements, due to the flag -- 
    # only take the name
    cols.append(raw_cols[0][-1:][0])
    # for all other columns, use the first result text
    cols.extend([col[0] for col in raw_cols[1:]])
    iso_csv.writerow(cols)

J'aime cette approche. J'ai mis à jour ce script pour utiliser des bibliothèques plus récentes et produire du JSON au lieu d'écrire dans un fichier CSV: gis.stackexchange.com/a/151571/54020
gitaarik


6

Sur de nombreuses distributions Linux, une liste des codes de pays iso est installée par défaut sous:

/usr/share/xml/iso-codes/iso_3166.xml

Sous Fedora / CentOS / RHEL / Debian , le paquet qui contient ce fichier est appelé iso-codes( page d'accueil du projet ).

Le fichier XML contient le mappage dans une structure hiérarchique:

<iso_3166_entries>
    <iso_3166_entry
            alpha_2_code="AF"
            alpha_3_code="AFG"
            numeric_code="004"
            name="Afghanistan"
            official_name="Islamic Republic of Afghanistan" />
[..]

Il peut être transformé en un format basé sur des enregistrements (par exemple pour l'importation de bases de données) via XPath et un shell one liner:

$ xmllint --noout --xpath \
     '//iso_3166_entry/@*[name() = "alpha_2_code" or name()="alpha_3_code"]' \
     /usr/share/xml/iso-codes/iso_3166.xml \
    | sed 's/alpha_2/\nalpha_2/g' \
    | awk -F'"' 'OFS="," {print $2,$4}'

Alternativement, on peut utiliser le module Python pycountry pour lire et transformer les codes de ce paquet, par exemple:

$ pip3 install --user pycountry
$ python3
>>> import pycountry
>>> for i in pycountry.countries:
...   print('{},{}'.format(i.alpha2,i.alpha3))
...
AF,AFG
AX,ALA
AL,ALB
[..]

Du code source de debian salsa.debian.org/iso-codes-team/iso-codes qui inclut également des traductions .po
polesen

5

Je voudrais ajouter pycountry parce que vous avez une balise python et cela semble être ce que vous vouliez. De la documentation:

ISO pays, subdivision, langue, devise et définitions de script et leurs traductions

pycountry fournit les bases de données ISO pour les normes:

639 Langues

3166 pays

3166-3 Pays supprimés

3166-2 Subdivisions de pays

4217 devises

15924 Scripts

Le paquet comprend une copie des pkg-isocodes de Debian et rend les données accessibles via une API Python.



2

J'ai mis à jour le script de @ scw qui gratte les données de Wikipedia. Il utilise désormais à la requestsplace de urllib2Beautiful Soup 4 et génère un JSON au lieu d'écrire dans un fichier CSV.

import json
import bs4
import requests

print(json.dumps(
    [
        {
            ['name', 'alpha_2', 'alpha_3', 'numeric'][no]:
            td.find_all()[-1].text
            for no, td in enumerate(row.find_all('td')[:-1])
        }
        for row in bs4.BeautifulSoup(
            requests.get('http://en.wikipedia.org/wiki/ISO_3166-1').text
        ).find('table', {'class': 'wikitable sortable'}).find_all('tr')[1:]
    ],
    indent=4,
    ensure_ascii=False
))

Génère un JSON comme:

[
    {
        "name": "Afghanistan",
        "alpha_3": "AFG",
        "alpha_2": "AF",
        "numeric": "004"
    },
    {
        "name": "Åland Islands",
        "alpha_3": "ALA",
        "alpha_2": "AX",
        "numeric": "248"
    },

    ...

J'adore cette méthode, est-il possible de changer la clé JSON en "alpha_3" ou "alpha_2" au lieu de lister?
benck

1

Vous pouvez utiliser ce code https://classic.scraperwiki.com/scrapers/iso_3166-1/edit/ - lxml est toujours plus rapide que BeautifulSoup.

Copié ici:

import scraperwiki
import lxml.html
import urllib
import datetime
import json

from unidecode import unidecode

def get_html(title):
    raw_json = scraperwiki.scrape("http://en.wikipedia.org/w/api.php?action=parse&format=json&page=" + title)
    html = json.loads(raw_json)['parse']['text']['*']
    return html

page_title = "ISO_3166-1"

html = get_html(page_title)
doc = lxml.html.fromstring(html)

for count, tr in enumerate(doc.cssselect('tr')):
    row = [(td.text_content()) for td in tr.cssselect('td')]
    if len(row)==5:
        for ahref in tr.cssselect('a'):
            detailink = ahref.attrib['href']
            if detailink.find(':',0,len(detailink)) != -1:
                detailink = detailink[6:]
                print detailink
        now = datetime.datetime.now()
        data ={"tmsp_scraped":str(now), "eng_short_name":row[0], "alpha_2_code":row[1], "alpha_3_code":row[2], "numeric_code":row[3], "iso_31662_code":detailink}
        scraperwiki.sqlite.save(unique_keys=["eng_short_name"], data=data, table_name="s_iso31661")

        html = get_html(detailink)
        doc = lxml.html.fromstring(html)

        for count, tr in enumerate(doc.cssselect('tr')):
            row = [td.text_content() for td in tr.cssselect('td')]
            row2 = [td.text_content() for td in tr.cssselect('td')]
            if len(row)>0:
                if row[0][:2] == detailink[11:]:
                    now = datetime.datetime.now()
                    data = {"tmsp_scraped":str(now), "iso_31662_code":detailink, "region_code":row[0], "region_desc":row[1], "region_desc_utf8":row2[1]}
                    scraperwiki.sqlite.save(unique_keys=["iso_31662_code","region_code"], data=data, table_name="s_iso31662_region")

Encore une belle bibliothèque: https://github.com/neuront/python-iso3166



1

J'ai trouvé une très belle base de données sur le dépôt github - https://github.com/stefangabos/world_countries

Au moment de l' écriture dépôt se composent de json, csv, les sqlfichiers de 22 langues avec des codes de pays différents: alpha-3 ISO 3166-1, alpha-2 ISO 3166-1 et les noms complets.

La base de données semble être mise à jour assez régulièrement



0

un tableau php avec les codes pays ISO à 3 lettres d'un article de Wikipedia

J'ai copié et collé la liste de Wikipedia et créé le tableau. Peut-être que ce code peut aider quelqu'un à gagner du temps, qui veut créer un tableau de codes de pays. Je ne suis pas familier avec python, mais la création de tableaux devrait être similaire à php.

$Countries=array();

array_push($Countries,"ABW");
array_push($Countries,"AFG");
array_push($Countries,"AGO");
array_push($Countries,"AIA");
array_push($Countries,"ALA");
array_push($Countries,"ALB");
array_push($Countries,"AND");
array_push($Countries,"ARE");
array_push($Countries,"ARG");
array_push($Countries,"ARM");
array_push($Countries,"ASM");
array_push($Countries,"ATA");
array_push($Countries,"ATF");
array_push($Countries,"ATG");
array_push($Countries,"AUS");
array_push($Countries,"AUT");
array_push($Countries,"AZE");
array_push($Countries,"BDI");
array_push($Countries,"BEL");
array_push($Countries,"BEN");
array_push($Countries,"BES");
array_push($Countries,"BFA");
array_push($Countries,"BGD");
array_push($Countries,"BGR");
array_push($Countries,"BHR");
array_push($Countries,"BHS");
array_push($Countries,"BIH");
array_push($Countries,"BLM");
array_push($Countries,"BLR");
array_push($Countries,"BLZ");
array_push($Countries,"BMU");
array_push($Countries,"BOL");
array_push($Countries,"BRA");
array_push($Countries,"BRB");
array_push($Countries,"BRN");
array_push($Countries,"BTN");
array_push($Countries,"BVT");
array_push($Countries,"BWA");
array_push($Countries,"CAF");
array_push($Countries,"CAN");
array_push($Countries,"CCK");
array_push($Countries,"CHE");
array_push($Countries,"CHL");
array_push($Countries,"CHN");
array_push($Countries,"CIV");
array_push($Countries,"CMR");
array_push($Countries,"COD");
array_push($Countries,"COG");
array_push($Countries,"COK");
array_push($Countries,"COL");
array_push($Countries,"COM");
array_push($Countries,"CPV");
array_push($Countries,"CRI");
array_push($Countries,"CUB");
array_push($Countries,"CUW");
array_push($Countries,"CXR");
array_push($Countries,"CYM");
array_push($Countries,"CYP");
array_push($Countries,"CZE");
array_push($Countries,"DEU");
array_push($Countries,"DJI");
array_push($Countries,"DMA");
array_push($Countries,"DNK");
array_push($Countries,"DOM");
array_push($Countries,"DZA");
array_push($Countries,"ECU");
array_push($Countries,"EGY");
array_push($Countries,"ERI");
array_push($Countries,"ESH");
array_push($Countries,"ESP");
array_push($Countries,"EST");
array_push($Countries,"ETH");
array_push($Countries,"FIN");
array_push($Countries,"FJI");
array_push($Countries,"FLK");
array_push($Countries,"FRA");
array_push($Countries,"FRO");
array_push($Countries,"FSM");
array_push($Countries,"GAB");
array_push($Countries,"GBR");
array_push($Countries,"GEO");
array_push($Countries,"GGY");
array_push($Countries,"GHA");
array_push($Countries,"GIB");
array_push($Countries,"GIN");
array_push($Countries,"GLP");
array_push($Countries,"GMB");
array_push($Countries,"GNB");
array_push($Countries,"GNQ");
array_push($Countries,"GRC");
array_push($Countries,"GRD");
array_push($Countries,"GRL");
array_push($Countries,"GTM");
array_push($Countries,"GUF");
array_push($Countries,"GUM");
array_push($Countries,"GUY");
array_push($Countries,"HKG");
array_push($Countries,"HMD");
array_push($Countries,"HND");
array_push($Countries,"HRV");
array_push($Countries,"HTI");
array_push($Countries,"HUN");
array_push($Countries,"IDN");
array_push($Countries,"IMN");
array_push($Countries,"IND");
array_push($Countries,"IOT");
array_push($Countries,"IRL");
array_push($Countries,"IRN");
array_push($Countries,"IRQ");
array_push($Countries,"ISL");
array_push($Countries,"ISR");
array_push($Countries,"ITA");
array_push($Countries,"JAM");
array_push($Countries,"JEY");
array_push($Countries,"JOR");
array_push($Countries,"JPN");
array_push($Countries,"KAZ");
array_push($Countries,"KEN");
array_push($Countries,"KGZ");
array_push($Countries,"KHM");
array_push($Countries,"KIR");
array_push($Countries,"KNA");
array_push($Countries,"KOR");
array_push($Countries,"KWT");
array_push($Countries,"LAO");
array_push($Countries,"LBN");
array_push($Countries,"LBR");
array_push($Countries,"LBY");
array_push($Countries,"LCA");
array_push($Countries,"LIE");
array_push($Countries,"LKA");
array_push($Countries,"LSO");
array_push($Countries,"LTU");
array_push($Countries,"LUX");
array_push($Countries,"LVA");
array_push($Countries,"MAC");
array_push($Countries,"MAF");
array_push($Countries,"MAR");
array_push($Countries,"MCO");
array_push($Countries,"MDA");
array_push($Countries,"MDG");
array_push($Countries,"MDV");
array_push($Countries,"MEX");
array_push($Countries,"MHL");
array_push($Countries,"MKD");
array_push($Countries,"MLI");
array_push($Countries,"MLT");
array_push($Countries,"MMR");
array_push($Countries,"MNE");
array_push($Countries,"MNG");
array_push($Countries,"MNP");
array_push($Countries,"MOZ");
array_push($Countries,"MRT");
array_push($Countries,"MSR");
array_push($Countries,"MTQ");
array_push($Countries,"MUS");
array_push($Countries,"MWI");
array_push($Countries,"MYS");
array_push($Countries,"MYT");
array_push($Countries,"NAM");
array_push($Countries,"NCL");
array_push($Countries,"NER");
array_push($Countries,"NFK");
array_push($Countries,"NGA");
array_push($Countries,"NIC");
array_push($Countries,"NIU");
array_push($Countries,"NLD");
array_push($Countries,"NOR");
array_push($Countries,"NPL");
array_push($Countries,"NRU");
array_push($Countries,"NZL");
array_push($Countries,"OMN");
array_push($Countries,"PAK");
array_push($Countries,"PAN");
array_push($Countries,"PCN");
array_push($Countries,"PER");
array_push($Countries,"PHL");
array_push($Countries,"PLW");
array_push($Countries,"PNG");
array_push($Countries,"POL");
array_push($Countries,"PRI");
array_push($Countries,"PRK");
array_push($Countries,"PRT");
array_push($Countries,"PRY");
array_push($Countries,"PSE");
array_push($Countries,"PYF");
array_push($Countries,"QAT");
array_push($Countries,"REU");
array_push($Countries,"ROU");
array_push($Countries,"RUS");
array_push($Countries,"RWA");
array_push($Countries,"SAU");
array_push($Countries,"SDN");
array_push($Countries,"SEN");
array_push($Countries,"SGP");
array_push($Countries,"SGS");
array_push($Countries,"SHN");
array_push($Countries,"SJM");
array_push($Countries,"SLB");
array_push($Countries,"SLE");
array_push($Countries,"SLV");
array_push($Countries,"SMR");
array_push($Countries,"SOM");
array_push($Countries,"SPM");
array_push($Countries,"SRB");
array_push($Countries,"SSD");
array_push($Countries,"STP");
array_push($Countries,"SUR");
array_push($Countries,"SVK");
array_push($Countries,"SVN");
array_push($Countries,"SWE");
array_push($Countries,"SWZ");
array_push($Countries,"SXM");
array_push($Countries,"SYC");
array_push($Countries,"SYR");
array_push($Countries,"TCA");
array_push($Countries,"TCD");
array_push($Countries,"TGO");
array_push($Countries,"THA");
array_push($Countries,"TJK");
array_push($Countries,"TKL");
array_push($Countries,"TKM");
array_push($Countries,"TLS");
array_push($Countries,"TON");
array_push($Countries,"TTO");
array_push($Countries,"TUN");
array_push($Countries,"TUR");
array_push($Countries,"TUV");
array_push($Countries,"TWN");
array_push($Countries,"TZA");
array_push($Countries,"UGA");
array_push($Countries,"UKR");
array_push($Countries,"UMI");
array_push($Countries,"URY");
array_push($Countries,"USA");
array_push($Countries,"UZB");
array_push($Countries,"VAT");
array_push($Countries,"VCT");
array_push($Countries,"VEN");
array_push($Countries,"VGB");
array_push($Countries,"VIR");
array_push($Countries,"VNM");
array_push($Countries,"VUT");
array_push($Countries,"WLF");
array_push($Countries,"WSM");
array_push($Countries,"YEM");
array_push($Countries,"ZAF");
array_push($Countries,"ZMB");
array_push($Countries,"ZWE");


0

Au cas où des utilisateurs R tomberaient sur ce fil, voici la solution R:

Le countrycodepaquet contient une liste complète des codes de pays dans de nombreux formats différents. De la documentation du package:

Prend en charge les schémas de codage suivants: caractère de corrélation de guerre, numérique CoW, caractère ISO3, numérique ISO3, caractère ISO2, FMI numérique, Comité international olympique, FIPS 10-4, FAO numérique, Nations Unies numérique, caractère Banque mondiale, noms officiels officiels de pays anglais (ISO), continent, région.

Le package convertira également entre différents codes et peut identifier les pays par des noms standard ou non standard en utilisant des expressions régulières.

library(countrycode)
# data frame of country names and codes
head(countrycode_data)
# convert from CoW to ISO3
countrycode(c("ALG","ALB","UKG","CAN","USA"), origin = "cowc", destination = "iso3c")
# ISO2 code from non-standard name
countrycode("Britain", "country.name", "iso2c")

0

Utilisez simplement les outils Microsoft Excel Power BI pour extraire les données de Wikipedia. Il faut moins de 30 secondes pour créer un excellent grattage de la page, puis l'enregistrer dans le format de votre choix.



-2

Pour récupérer des informations sur les pays (nom, caractère ISO 2, caractère ISO 3, ...), vous pouvez utiliser ce package NuGet sur angrymonkeycloud.com/geography .

Il s'agit d'un client .Net gratuit qui récupère les informations d'une API RESTful.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.