Estoy buscando una lista completa de países con sus códigos de país .
Al igual que en esta página (necesita completa y válida):
Estoy buscando una lista completa de países con sus códigos de país .
Al igual que en esta página (necesita completa y válida):
Respuestas:
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.
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)
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.
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
[..]
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.
Puede obtener una lista completa de Alpha 2 y Alpha 3 (más otra información) en http://datahub.io/dataset/iso-3166-1-alpha-2-country-codes/resource/9c3b30dd-f5f3-4bbe-a3cb -d7b2c21d66ce Hay un enlace a él desde http://datahub.io/dataset/iso-3166-1-alpha-2-country-codes
Actualicé el script de @ scw que raspa los datos de Wikipedia. Ahora usa en requests
lugar de urllib2
Beautiful 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"
},
...
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
También hay un gran conjunto de datos en Open Knowledge Foundation que incluye ISO 3166 alpha3, alpha2, numérico y muchos otros.
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
, sql
archivos 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.
Prueba esta lista:
https://gist.github.com/eparreno/205900
Tiene códigos ISO de 2 letras, 3 letras y numéricos con nombres cortos de países.
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");
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
En caso de que algún usuario de R tropiece con este hilo, aquí está la solución de R:
El countrycode
paquete 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")
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.
Este es un hilo viejo, pero vale la pena actualizarlo.
Las búsquedas directas / inversas en los códigos de país Alpha2 y Alpha3 devuelven un objeto masivo por país que incluye códigos de teléfono, moneda, información iso, información IOC, códigos postales y más: https://github.com/rolinger/iso-country -data-validation / settings
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.