Ta odpowiedź jest teraz w 100% przydatna jako pierwszy link, oficjalna strona, teraz również udostępnia bezpłatnie kod alfa-3 w ładnie sformatowanej tabeli do kopiowania.
Dirk van Bergen
@DirkvanBergen To fajny ruch, ale ich stół jest daleki od ładnego sformatowania. 10 stronicowania stron, bez linku CSV.
Adam Matan
4
Użyj linku po lewej stronie, aby wyświetlić tylko przypisane kody, a następnie ustaw stronę tak, aby wyświetlała 300, i masz to wszystko, skopiuj wklej do programu Excel i (ab) używaj go w dowolny sposób.
Dirk van Bergen,
14
Jeśli chcesz okresowo aktualizować listę, możesz zeskrobać jedno ze źródeł i przeanalizować jego wyniki w przydatnym formacie. Zrobiłem to tutaj, aby przekonwertować listę kodów krajów Wikipedii na 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)
Lubię to podejście. Zaktualizowałem ten skrypt, aby używać nowszych bibliotek i wyświetlał JSON zamiast zapisywać do pliku CSV: gis.stackexchange.com/a/151571/54020
Zaktualizowałem skrypt @ scw, który usuwa dane z Wikipedii. Teraz używa requestszamiast urllib2Beautiful Soup 4 i wyświetla JSON zamiast pisać do pliku 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
))
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")
W chwili pisania repozytorium składa się z json, csv, sqlpliki dla 22 języków z różnymi kodami Kraj: ISO 3166-1 alfa-3, ISO 3166-1 alfa-2 i pełnych nazw.
Baza danych wydaje się być dość regularnie aktualizowana
Skopiowałem i wkleiłem listę z Wikipedii i utworzyłem tablicę. Może ten kod może pomóc komuś zaoszczędzić trochę czasu, który chce stworzyć tablicę kodów krajów. Nie znam Pythona, ale tworzenie tablic powinno być podobne do php.
Jeśli nie chcesz na stałe kodować listy krajów (której nie polecam, ponieważ bardzo się zmienia), użyj tego adresu URL, z którego otrzymujesz dwuliterowy kod i nazwę kraju w formacie JSON :
annsystem.com/api / getCountry
Obejmuje również kraje należące do ONZ i spoza niej .
W przypadku, gdy użytkownicy R natkną się na ten wątek, oto rozwiązanie R:
countrycodePakiet zawiera pełną listę kodów krajów w wielu różnych formatach. Z dokumentacji opakowania:
Obsługuje następujące schematy kodowania: znak Korelatów Wojny, numer CoW, znak ISO3, numer ISO3, znak ISO2, numer IMF, Międzynarodowy Komitet Olimpijski, FIPS 10-4, numer FAO, numer ONZ, znak Banku Światowego, oficjalne angielskie nazwy krajów (ISO), kontynent, region.
Pakiet konwertuje również różne kody i może identyfikować kraje według standardowych lub niestandardowych nazw przy użyciu wyrażeń regularnych.
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")
Wystarczy użyć narzędzi Microsoft Excel Power BI, aby wyodrębnić dane z Wikipedii. Utworzenie doskonałej kopii strony i zapisanie jej w dowolnym formacie zajmuje mniej niż 30 sekund.
Odpowiedzi:
Oficjalna strona ISO 3166-1 jest prawdopodobnie najbardziej aktualizowane źródło kodów dwóch liter. Niestety nie mają online alfa-3, cytując swoją stronę :
Trochę dziwne w erze Internetu, ale na szczęście jest artykuł w Wikipedii z pełną listą i oficjalnym dokumentem ONZ, który obejmuje ten temat, z kodami krajów .
Aktualizacja:
Na stronie CIA znajduje się lista z FIPS 10, ISO 3166 Alpha2, ISO 3166 Alpha3, STANAG i Internetową TLD (np. .Il lub .uk).
Podsumowanie linku :
Pamiętaj, że te listy zawierają podmioty spoza kraju, takie jak Antartica.
źródło
Jeśli chcesz okresowo aktualizować listę, możesz zeskrobać jedno ze źródeł i przeanalizować jego wyniki w przydatnym formacie. Zrobiłem to tutaj, aby przekonwertować listę kodów krajów Wikipedii na CSV :
źródło
Wszystkie (większość?) Dwuliterowe i trzyliterowe kody można znaleźć na stronie http://download.geonames.org/export/dump/countryInfo.txt - zawiera także kody numeryczne ISO i kody fips oraz inne informacje o kraju.
źródło
W wielu dystrybucjach Linuksa lista kodów krajów ISO jest domyślnie instalowana pod:
W Fedorze / CentOS / RHEL / Debian pakiet zawierający ten plik nazywa się
iso-codes
( strona główna projektu ).Plik XML zawiera odwzorowanie w strukturze hierarchicznej:
Można go przekształcić do formatu opartego na rekordach (np. Do importu bazy danych) przez XPath i jeden wiersz powłoki:
Alternatywnie można użyć pycountry modułu Pythona do odczytu i transformacji kodów z tego pakietu, np .:
źródło
Chciałbym dodać pycountry, ponieważ masz tag python i wydaje się, że to jest to, czego chciałeś. Z dokumentów:
źródło
Możesz uzyskać pełną listę Alpha 2 i Alpha 3 (plus inne informacje) z http://datahub.io/dataset/iso-3166-1-alpha-2-country-codes/resource/9c3b30dd-f5f3-4bbe-a3cb -d7b2c21d66ce Istnieje link do niego z http://datahub.io/dataset/iso-3166-1-alpha-2-country-codes
źródło
Zaktualizowałem skrypt @ scw, który usuwa dane z Wikipedii. Teraz używa
requests
zamiasturllib2
Beautiful Soup 4 i wyświetla JSON zamiast pisać do pliku CSV.Wysyła kod JSON, taki jak:
źródło
Możesz użyć tego kodu https://classic.scraperwiki.com/scrapers/iso_3166-1/edit/ - lxml jest zawsze szybszy niż BeautifulSoup.
Skopiowałem tutaj:
Jeszcze jedna fajna biblioteka: https://github.com/neuront/python-iso3166
źródło
Istnieje również świetny zestaw danych w Open Knowledge Foundation, który obejmuje ISO 3166 alpha3, alpha2, numeryczny, a także wiele innych.
http://data.okfn.org/data/core/country-codes#data
https://github.com/datasets/country-codes
źródło
Znalazłem bardzo ładną bazę danych na repozytorium github - https://github.com/stefangabos/world_countries
W chwili pisania repozytorium składa się z
json
,csv
,sql
pliki dla 22 języków z różnymi kodami Kraj: ISO 3166-1 alfa-3, ISO 3166-1 alfa-2 i pełnych nazw.Baza danych wydaje się być dość regularnie aktualizowana
źródło
Wypróbuj tę listę:
https://gist.github.com/eparreno/205900
Posiada 2-literowe, 3-literowe i numeryczne kody ISO z krótkimi nazwami krajów.
źródło
tablica php z 3 literowymi kodami krajów ISO z artykułu w Wikipedii
Skopiowałem i wkleiłem listę z Wikipedii i utworzyłem tablicę. Może ten kod może pomóc komuś zaoszczędzić trochę czasu, który chce stworzyć tablicę kodów krajów. Nie znam Pythona, ale tworzenie tablic powinno być podobne do php.
źródło
Jeśli nie chcesz na stałe kodować listy krajów (której nie polecam, ponieważ bardzo się zmienia), użyj tego adresu URL, z którego otrzymujesz dwuliterowy kod i nazwę kraju w formacie JSON : annsystem.com/api / getCountry
Obejmuje również kraje należące do ONZ i spoza niej .
Szczegółowe informacje i parametry można znaleźć tutaj: flossk.org/en/blog/country-list-good-all
źródło
W przypadku, gdy użytkownicy R natkną się na ten wątek, oto rozwiązanie R:
countrycode
Pakiet zawiera pełną listę kodów krajów w wielu różnych formatach. Z dokumentacji opakowania:Pakiet konwertuje również różne kody i może identyfikować kraje według standardowych lub niestandardowych nazw przy użyciu wyrażeń regularnych.
źródło
Wystarczy użyć narzędzi Microsoft Excel Power BI, aby wyodrębnić dane z Wikipedii. Utworzenie doskonałej kopii strony i zapisanie jej w dowolnym formacie zajmuje mniej niż 30 sekund.
źródło
To jest stary wątek, ale warto go zaktualizować.
Wyszukiwanie do przodu / do tyłu w kodach krajów Alpha2 i Alpha3, zwraca olbrzymi obiekt według kraju, który zawiera kody telefonu, walutę, informacje ISO, informacje IOC, kody pocztowe i inne: https://github.com/rolinger/iso-country -data-validation / settings
źródło
Aby pobrać informacje o krajach (nazwa, znak ISO 2, znak ISO 3, ...) możesz użyć tego pakietu NuGet na angrymonkeycloud.com/geography .
Jest to bezpłatny klient .Net, który pobiera informacje z RESTful API.
źródło