ISO ALPHA-2 ve ISO ALPHA-3 ülke kodlarının tam listesini mi arıyorsunuz?


Yanıtlar:


31

ISO 3166-1 resmi sitesi olasılıkla iki harfli kodları için en güncel kaynaktır. Maalesef, alfa-3 çevrimiçi değil, sitelerden alıntı yapıyorlar :

ISO 3166-1 alpha-3 ülke kodunu ISO 3166 / MA web sitesinde ücretsiz indirmek için nerede bulabilirim?

Hiçbir yerde. Alpha-3 kodu ücretsiz kullanılmaz. ISO 3166-1 Uluslararası Standartını ISO Mağazamızdan satın alabilirsiniz. Üç harfli kodu içerir.

İnternet çağında biraz garip, ama neyse ki, tam listeye sahip bir Wikipedia makalesi ve konuyu kapsayan bir BM resmi belgesi ve ülke kodları var .

Güncelleştirme:

CIA sitesinde FIPS 10, ISO 3166 Alpha2, ISO 3166 Alpha3, STANAG ve Internet TLD (örneğin .il veya .uk) ile bir liste var .

Bağlantı özeti :

Bu listenin Antartica gibi ülke dışı varlıklar içerdiğini unutmayın.


2
Bu cevap şimdi ilk link olarak% 100 kullanışlıdır, resmi site, artık alfa-3 kodunu güzelce biçimlendirilmiş kopyalanabilir bir tabloda ücretsiz olarak sunmaktadır.
Dirk van Bergen

@DirkvanBergen Güzel bir hamle, ancak masaları güzelce biçimlendirilmiş olmaktan uzak. 10 sayfalık sayfalama, CSV bağlantısı yok.
Adam Matan,

4
Soldaki bağlantıyı yalnızca atanmış kodları göstermek için kullanın ve ardından sayfayı 300 gösterecek şekilde ayarlayın ve hepsine sahip olun, yapıştırmayı excel olarak kopyalayın ve (ab) istediğiniz şekilde kullanın.
Dirk van Bergen

14

Listenizi düzenli aralıklarla güncellemek istiyorsanız, kaynaklardan birini kazıyabilir ve sonuçlarını yararlı bir biçimde ayrıştırabilirsiniz. Wikipedia ülke kodu listesini CSV'ye dönüştürmek için burada yaptım :

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)

Bu yaklaşımı seviyorum. Bu betiği daha yeni kütüphaneler kullanmak ve bir CSV dosyasına yazmak yerine JSON çıkarmak için kullandım: gis.stackexchange.com/a/151571/54020
gitaarik


6

Çoğu Linux dağıtımında, aşağıdaki varsayılan olarak bir ülke kodlarının listesi yüklenir:

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

Fedora / CentOS / RHEL / Debian altında , bu dosyayı içeren paket adı iso-codes( proje ana sayfası ).

XML dosyası eşleştirmeyi hiyerarşik bir yapıda içerir:

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

XPath ve kabuk bir liner ile rekor bazlı bir formata dönüştürülebilir (örneğin, veri tabanı içe aktarımı için):

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

Alternatif olarak, bu paketten kodları okumak ve dönüştürmek için Python modülü pycountry'yi kullanabilirsiniz, örneğin:

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

Debian kaynak kodundan salsa.debian.org/iso-codes-team/iso-codes ayrıca .po çevirileri de içerir
polesen

5

Pycountry'i eklemek istiyorum çünkü bir python etiketiniz var ve istediğiniz gibi görünüyor. Dokümanlardan:

ISO ülkesi, alt bölümü, dili, para birimi ve senaryo tanımları ve çevirileri

pycountry, standartlar için ISO veritabanlarını sağlar:

639 Dil

3166 Ülke

3166-3 Silinmiş ülkeler

3166-2 Ülkelerin bölümleri

4217 Para birimleri

15924 Scriptler

Paket, Debian'ın pkg-isocodes belgesinin bir kopyasını içerir ve verileri bir Python API'sinden erişilebilir hale getirir.



2

@ Scw'nin Wikipedia'daki verileri kazıdığı betiğini güncelledim. Şimdi , Beautiful Soup 4 requestsyerine kullanır urllib2ve bir CSV dosyasına yazmak yerine bir JSON çıkarır.

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

Bir JSON benzeri çıktılar:

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

    ...

Bu yöntemi seviyorum, JSON anahtarını liste yerine "alpha_3" veya "alpha_2" olarak değiştirmek mümkün mü?
Ben

1

Bu kodu kullanabilirsiniz https://classic.scraperwiki.com/scrapers/iso_3166-1/edit/ - lxml her zaman BeautifulSoup'tan daha hızlıdır.

Buraya kopyaladım:

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

Bir daha güzel kütüphane: https://github.com/neuront/python-iso3166



1

Github deposunda çok güzel bir veritabanı buldum - https://github.com/stefangabos/world_countries

Depo yazma anında oluşur json, csv, sql22 farklı ülke kodları kullanan diller için dosyaları: ISO 3166-1 alpha-3, ISO 3166-1 alpha-2 ve tam ad.

Veritabanı oldukça düzenli olarak güncelleniyor gibi görünüyor



0

Wikipedia makalesinden 3 harfli ISO ülke kodları içeren bir php dizisi

Listeyi Wikipedia'dan kopyalayıp yapıştırdım ve diziyi oluşturdum. Belki bu kod, birilerinin ülke kodları dizisini oluşturmak isteyen zaman kazanmasına yardımcı olabilir. Python'a aşina değilim, fakat dizi oluşturma php'ye benzer olmalıdır.

$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

Herhangi bir R kullanıcısı bu konuya rastlarsa, işte R çözümü:

countrycodePaket birçok farklı biçimde ülke kodlarının tam listesini içerir. Paket dokümantasyonundan:

Aşağıdaki kodlama şemalarını destekler: Savaş karakteri, CoW-sayısal, ISO3-karakter, ISO3-sayısal, ISO2-karakter, IMF-sayısal, Uluslararası Olimpiyat Komitesi, FIPS 10-4, FAO-sayısal, Birleşmiş Milletler, Dünya Bankası karakteri, resmi İngilizce kısa ülke adları (ISO), kıta, bölge.

Paket aynı zamanda farklı kodlar arasında dönüşecek ve düzenli ifadeler kullanarak ülkeleri standart veya standart olmayan adlarla tanımlayabilecektir.

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

Verileri Wikipedia'dan çıkarmak için Microsoft Excel Power BI araçlarını kullanın. Sayfanın mükemmel bir kazıma oluşturması ve ardından istediğiniz formata kaydetmesi 30 saniyeden uzun sürüyor.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.