¿Busca la lista completa de los códigos de país ISO ALPHA-2 e ISO ALPHA-3?

Respuestas:

31

El sitio oficial ISO 3166-1 es probablemente la fuente más actualizada para los códigos de dos letras. Desafortunadamente, no tienen el alfa-3 en línea, citando su sitio :

¿Dónde puedo encontrar el código de país ISO 3166-1 alpha-3 para su descarga gratuita en el sitio web de ISO 3166 / MA?

En ninguna parte. El código alfa-3 no está disponible de forma gratuita. Puede comprar el estándar internacional ISO 3166-1 en nuestra tienda ISO. Contiene el código de tres letras.

Un poco extraño en la era de Internet, pero afortunadamente, hay un artículo de Wikipedia con la lista completa y un documento oficial de la ONU que cubre el tema, con códigos de país .

Actualizar:

Hay una lista en el sitio de la CIA con FIPS 10, ISO 3166 Alpha2, ISO 3166 Alpha3, STANAG e Internet TLD (por ejemplo, .il o .uk).

Resumen del enlace :

Tenga en cuenta que esta lista contiene entidades que no son países como Antartica.

Adam Matan
fuente
2
Esta respuesta ahora es 100% útil, ya que el primer enlace, el sitio oficial, ahora también proporciona el código alfa-3 de forma gratuita en una tabla copiable con buen formato.
Dirk van Bergen
@DirkvanBergen Ese es un buen movimiento, pero su tabla está lejos de estar bien formateada. Paginación de 10 páginas, sin enlace CSV.
Adam Matan
44
Use el enlace de la izquierda para mostrar solo los códigos asignados y luego configure la página para mostrar 300 y ya lo tiene todo, copie y pegue para sobresalir y (ab) úselo de la forma que desee.
Dirk van Bergen
14

Si desea actualizar periódicamente su lista, puede raspar una de las fuentes y analizar sus resultados en un formato útil. Lo hice aquí para convertir la lista de códigos de país de Wikipedia en un 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)
scw
fuente
Me gusta este enfoque. Actualicé este script para usar bibliotecas más recientes y generar JSON en lugar de escribir en un archivo CSV: gis.stackexchange.com/a/151571/54020
gitaarik
7

Puede encontrar todos (¿la mayoría?) De los códigos de dos y tres letras en http://download.geonames.org/export/dump/countryInfo.txt : también tiene códigos ISO numéricos y fips y otra información del país.

Ian Turton
fuente
2
Este es un buen formato, pero ahora está desactualizado. No contiene los códigos para Sudán del Sur y Kosovo.
Mateo
6

En muchas distribuciones de Linux, se instala una lista de códigos de país iso de forma predeterminada en:

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

Bajo Fedora / CentOS / RHEL / Debian , el paquete que contiene este archivo se llama iso-codes( página de inicio del proyecto ).

El archivo XML contiene la asignación en una estructura jerárquica:

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

Se puede transformar en un formato basado en registros (por ejemplo, para la importación de la base de datos) a través de XPath y un revestimiento de shell uno:

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

Alternativamente, uno puede usar el módulo python pycountry para leer y transformar los códigos de ese paquete, por ejemplo:

$ pip3 install --user pycountry
$ python3
>>> import pycountry
>>> for i in pycountry.countries:
...   print('{},{}'.format(i.alpha2,i.alpha3))
...
AF,AFG
AX,ALA
AL,ALB
[..]
maxschlepzig
fuente
Del código fuente de debian salsa.debian.org/iso-codes-team/iso-codes que también incluye traducciones
.po
5

Me gustaría agregar pycountry porque tienes una etiqueta de python y parece ser lo que querías. De los documentos:

ISO país, subdivisión, idioma, moneda y definiciones de script y sus traducciones

pycountry proporciona las bases de datos ISO para los estándares:

639 idiomas

3166 países

3166-3 Países eliminados

3166-2 Subdivisiones de países

4217 monedas

15924 guiones

El paquete incluye una copia de los pcoco-códigos de Debian y hace que los datos sean accesibles a través de una API de Python.

einSelbst
fuente
2

Actualicé el script de @ scw que raspa los datos de Wikipedia. Ahora usa en requestslugar de urllib2Beautiful Soup 4 y genera un JSON en lugar de escribir en un archivo 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
))

Produce un JSON como:

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

    ...
gitaarik
fuente
Me encanta este método, ¿es posible cambiar la clave JSON a "alpha_3" o "alpha_2" en lugar de la lista?
Benck
1

Puede usar este código https://classic.scraperwiki.com/scrapers/iso_3166-1/edit/ - lxml siempre es más rápido que BeautifulSoup.

Copié aquí:

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

Una biblioteca más agradable: https://github.com/neuront/python-iso3166

usuario21707
fuente
1

Encontré una muy buena base de datos en el repositorio de github: https://github.com/stefangabos/world_countries

En el momento de escribir repositorio consistir json, csv, sqlarchivos de 22 idiomas con distintos códigos de país: ISO 3166-1 alpha-3, ISO 3166-1 alfa-2 y los nombres completos.

La base de datos parece actualizarse con bastante frecuencia.

ruX
fuente
0

una matriz php con códigos de país ISO de 3 letras del artículo de Wikipedia

Copié y pegué la lista de Wikipedia y creé la matriz. Tal vez este código pueda ayudar a alguien a ahorrar tiempo, que quiere crear una variedad de códigos de país. No estoy familiarizado con Python, pero la creación de matrices debería ser similar a 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");
MrWeix
fuente
0

Si no desea codificar la lista de países (que no recomiendo porque cambia mucho) use esta URL de la que obtiene el código de 2 letras y el nombre del país en formato JSON : annsystem.com/api / getCountry

También incluye países miembros de la ONU y no miembros de la ONU .

Para detalles y parámetros, ver aquí: flossk.org/en/blog/country-list-good-all

usuario1319829
fuente
0

En caso de que algún usuario de R tropiece con este hilo, aquí está la solución de R:

El countrycodepaquete contiene una lista completa de códigos de países en muchos formatos diferentes. De la documentación del paquete:

Admite los siguientes esquemas de codificación: Correlatos de caracteres de guerra, numéricos CoW, caracteres ISO3, numéricos ISO3, caracteres ISO2, numéricos del FMI, Comité Olímpico Internacional, FIPS 10-4, numéricos de la FAO, numéricos de las Naciones Unidas, caracteres del Banco Mundial, Nombres oficiales ingleses de país (ISO), continente, región

El paquete también se convertirá entre diferentes códigos y puede identificar países por nombres estándar o no estándar utilizando expresiones regulares.

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")
Matt SM
fuente
0

Simplemente use las herramientas de Microsoft Excel Power BI para extraer los datos de Wikipedia. Se necesitan menos de 30 segundos para crear un raspado de Excel de la página y luego guardarlo en el formato que desee.

Christian McGhee
fuente
-2

Para recuperar información de países (Nombre, ISO 2 char, ISO 3 char, ...) puede usar este paquete NuGet en angrymonkeycloud.com/geography .

Es un cliente .Net gratuito que recupera información de una API RESTful.

Elie Tebchrani
fuente