Ich suche eine vollständige Liste der ISO ALPHA-2- und ISO ALPHA-3-Ländercodes?


23

Ich suche nach einer vollständigen Liste von Ländern mit deren Ländercodes .

Gefällt mir auf dieser Seite (muss vollständig und gültig sein):

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


Die Verteilung von Perl Locale :: Codes ist sehr umfangreich und wird aktiv gepflegt.
Dave Baird

Wenn Sie nach offenen Daten suchen, sollten Sie nach Open Data Stack Exchange fragen .
PolyGeo

Antworten:


31

Die offizielle ISO 3166-1-Website ist wahrscheinlich die aktuellste Quelle für die aus zwei Buchstaben bestehenden Codes. Leider haben sie nicht die Alpha-3 online und zitieren ihre Website :

Wo finde ich den ISO 3166-1 Alpha-3-Ländercode zum kostenlosen Download auf der ISO 3166 / MA-Website?

Nirgends. Der Alpha-3-Code wird nicht kostenlos zur Verfügung gestellt. Sie können den internationalen Standard ISO 3166-1 in unserem ISO-Shop kaufen. Es enthält den dreistelligen Code.

Ein bisschen seltsam in der Internet-Ära, aber zum Glück gibt es einen Wikipedia-Artikel mit der vollständigen Liste und ein offizielles Dokument der Vereinten Nationen, das das Thema mit Ländercodes behandelt .

Aktualisieren:

Am CIA-Standort gibt es eine Liste mit FIPS 10, ISO 3166 Alpha2, ISO 3166 Alpha3, STANAG und Internet-TLD (z. B. .il oder .uk).

Linkzusammenfassung :

Beachten Sie, dass diese Liste Nicht-Länder-Einheiten wie Antartica enthält.


2
Diese Antwort ist jetzt zu 100% nützlich, da der erste Link, die offizielle Website, jetzt auch den Alpha-3-Code kostenlos in einer gut formatierten, kopierfähigen Tabelle bereitstellt.
Dirk van Bergen

@DirkvanBergen Das ist ein schöner Schachzug, aber der Tisch ist alles andere als schön formatiert. 10-seitige Paginierung, kein CSV-Link.
Adam Matan

4
Verwenden Sie den Link auf der linken Seite, um nur zugewiesene Codes anzuzeigen, und stellen Sie dann die Seite auf 300 und Sie haben alles, kopieren, einfügen, um zu übertreffen, und (ab) verwenden Sie es auf jede gewünschte Weise.
Dirk van Bergen

14

Wenn Sie Ihre Liste regelmäßig aktualisieren möchten, können Sie eine der Quellen löschen und die Ergebnisse in ein nützliches Format konvertieren. Ich habe dies hier getan, um die Wikipedia- Ländercodeliste in eine CSV-Datei umzuwandeln :

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)

Ich mag diesen Ansatz. Ich habe dieses Skript aktualisiert, um neuere Bibliotheken zu verwenden und JSON auszugeben, anstatt in eine CSV-Datei zu schreiben: gis.stackexchange.com/a/151571/54020
gitaarik


6

Auf vielen Linux-Distributionen ist standardmäßig eine Liste der ISO-Ländercodes installiert:

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

Unter Fedora / CentOS / RHEL / Debian heißt das Paket, das diese Datei enthält iso-codes( Projekt-Homepage ).

Die XML-Datei enthält das Mapping in einer hierarchischen Struktur:

<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" />
[..]

Es kann über XPath und einen Shell-One-Liner in ein satzbasiertes Format (z. B. für den Datenbankimport) umgewandelt werden:

$ 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}'

Alternativ kann man das Python-Modul pycountry verwenden , um die Codes aus diesem Paket zu lesen und zu transformieren, zB:

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

Vom Debian- Quellcode salsa.debian.org/iso-codes-team/iso-codes, der auch .po-Übersetzungen enthält
polesen

5

Ich möchte pycountry hinzufügen, weil Sie ein Python-Tag haben und es so zu sein scheint, wie Sie es wollten. Aus den Dokumenten:

ISO-Länder-, Unterteilungs-, Sprach-, Währungs- und Skriptdefinitionen sowie deren Übersetzungen

pycountry stellt die ISO-Datenbanken für die Standards zur Verfügung:

639 Sprachen

3166 Länder

3166-3 Gelöschte Länder

3166-2 Untergliederungen von Ländern

4217 Währungen

15924 Skripte

Das Paket enthält eine Kopie von Debians pkg-Isocodes und macht die Daten über eine Python-API zugänglich.



2

Ich habe das Skript von @ scw aktualisiert, das die Daten aus Wikipedia entfernt. Es wird jetzt requestsstatt urllib2Beautiful Soup 4 verwendet und es wird ein JSON ausgegeben, anstatt in eine CSV-Datei zu schreiben.

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
))

Gibt einen JSON wie folgt aus:

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

    ...

Ich liebe diese Methode. Ist es möglich, den JSON-Schlüssel in "alpha_3" oder "alpha_2" anstatt in "list" zu ändern?
Benck

1

Sie können diesen Code https://classic.scraperwiki.com/scrapers/iso_3166-1/edit/ verwenden - lxml ist immer schneller als BeautifulSoup.

Kopierte es hier:

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")

Eine weitere nette Bibliothek: https://github.com/neuront/python-iso3166



1

Ich habe eine sehr schöne Datenbank im Github-Repo gefunden - https://github.com/stefangabos/world_countries

Im Moment des Repository Schreiben aus json, csv, sqlDateien für 22 Sprachen mit unterschiedlichen Ländercodes: ISO 3166-1 alpha-3, ISO 3166-1 alpha-2 und dem vollständigen Namen.

Die Datenbank scheint ziemlich regelmäßig aktualisiert zu werden



0

ein PHP-Array mit 3 Buchstaben ISO-Ländercodes aus Wikipedia-Artikel

Ich habe die Liste aus Wikipedia kopiert und eingefügt und das Array erstellt. Vielleicht kann dieser Code jemandem helfen, Zeit zu sparen, der eine Reihe von Ländercodes erstellen möchte. Ich bin nicht mit Python vertraut, aber die Erstellung von Arrays sollte ähnlich wie bei PHP sein.

$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

Für den Fall, dass ein R-Benutzer auf diesen Thread stößt, ist hier die R-Lösung:

Das countrycodePaket enthält eine vollständige Liste der Ländercodes in vielen verschiedenen Formaten. Aus der Paketdokumentation:

Unterstützt die folgenden Codierungsschemata: Korrelate von Kriegszeichen, CoW-Zahl, ISO3-Zahl, ISO3-Zahl, ISO2-Zahl, IWF-Zahl, Internationales Olympisches Komitee, FIPS 10-4, FAO-Zahl, Zahl der Vereinten Nationen, Weltbank-Zahl, offizielle englische Kurzlandnamen (ISO), Kontinent, Region.

Das Paket konvertiert auch zwischen verschiedenen Codes und kann Länder durch Standard- oder Nicht-Standardnamen mit regulären Ausdrücken identifizieren.

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

Verwenden Sie einfach Microsoft Excel Power BI-Tools, um die Daten aus Wikipedia zu extrahieren. Es dauert weniger als 30 Sekunden, um ein Excel-Scrape der Seite zu erstellen und es dann in einem beliebigen Format zu speichern.



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.