Tìm kiếm danh sách đầy đủ các mã quốc gia ISO ALPHA-2 và ISO ALPHA-3?


23

Tôi đang tìm kiếm một danh sách đầy đủ các quốc gia với mã quốc gia của họ .

Giống như trên trang này (cần đầy đủ và hợp lệ):

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


Perl Locale :: Phân phối rất toàn diện và được duy trì tích cực.
Dave Baird

Nếu đó là dữ liệu mở mà bạn tìm kiếm thì tôi nghĩ nơi cần hỏi là Trao đổi ngăn xếp dữ liệu mở .
PolyGeo

Câu trả lời:


31

Các trang web chính thức ISO 3166-1 có lẽ là nguồn cập nhật mới nhất cho các mã hai chữ cái. Thật không may, họ không có alpha-3 trực tuyến, trích dẫn trang web của họ :

Tôi có thể tìm mã quốc gia ISO 3166-1 alpha-3 ở đâu để tải xuống miễn phí trên Trang web ISO 3166 / MA?

Hư không. Mã alpha-3 không được cung cấp miễn phí. Bạn có thể mua Tiêu chuẩn quốc tế ISO 3166-1 từ Cửa hàng ISO của chúng tôi. Nó chứa mã ba chữ cái.

Một chút lạ trong thời đại internet, nhưng may mắn thay, có một bài viết Wikipedia với danh sách đầy đủ và một tài liệu chính thức của Liên Hợp Quốc bao gồm chủ đề, với mã quốc gia .

Cập nhật:

Có một danh sách tại trang web của CIA với Trin 10, ISO 3166 Alpha2, ISO 3166 Alpha3, STANAG và Internet TLD (ví dụ: .il hoặc .uk).

Tóm tắt liên kết :

Lưu ý rằng những danh sách này chứa các thực thể không phải là quốc gia như Antartica.


2
Câu trả lời này hiện hữu ích 100% khi là liên kết đầu tiên, trang web chính thức, giờ đây cũng cung cấp mã alpha-3 miễn phí trong một bảng sao chép được định dạng độc đáo.
Dirk van Bergen

@DirkvanBergen Đó là một động thái hay, nhưng bàn của họ không được định dạng độc đáo. Phân trang 10 trang, không có liên kết CSV.
Adam Matan

4
Sử dụng liên kết ở bên trái để chỉ hiển thị mã được chỉ định và sau đó đặt trang hiển thị 300 và bạn có tất cả, sao chép dán vào excel và (ab) sử dụng nó theo bất kỳ cách nào bạn muốn.
Dirk van Bergen

14

Nếu bạn muốn định kỳ cập nhật danh sách của mình, bạn có thể cạo một trong các nguồn và phân tích kết quả của nó thành một định dạng hữu ích. Tôi đã làm như vậy ở đây để chuyển đổi danh sách mã quốc gia Wikipedia thành 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)

Tôi thích cách tiếp cận này. Tôi đã cập nhật tập lệnh này để sử dụng các thư viện gần đây hơn và xuất JSON thay vì ghi vào tệp CSV: gis.stackexchange.com/a/151571/54020
gitaarik


6

Trên nhiều bản phân phối Linux, một danh sách mã quốc gia iso được cài đặt theo mặc định trong:

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

Trong Fedora / CentOS / RHEL / Debian , gói chứa tệp này được gọi iso-codes( trang chủ dự án ).

Tệp XML chứa ánh xạ trong cấu trúc phân cấp:

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

Nó có thể được chuyển đổi thành định dạng dựa trên bản ghi (ví dụ: nhập cơ sở dữ liệu) thông qua XPath và lớp vỏ một lớp:

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

Ngoài ra, người ta có thể sử dụng pycountry mô-đun Python để đọc và chuyển đổi mã từ gói đó, ví dụ:

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

Từ mã nguồn debian salsa.debian.org/iso-codes-team/iso-codes cũng bao gồm các bản dịch .po
polesen

5

Tôi muốn thêm pycountry vì bạn có thẻ python và nó dường như là những gì bạn muốn. Từ các tài liệu:

Quốc gia ISO, phân ngành, ngôn ngữ, tiền tệ và định nghĩa tập lệnh và bản dịch của chúng

pycountry cung cấp cơ sở dữ liệu ISO cho các tiêu chuẩn:

639 ngôn ngữ

3166 quốc gia

3166-3 Các quốc gia đã xóa

3166-2 Phân khu của các quốc gia

4217 Tiền tệ

15924 Tập lệnh

Gói này bao gồm một bản sao từ pkg-isocodes của Debian và làm cho dữ liệu có thể truy cập được thông qua API Python.



2

Tôi đã cập nhật tập lệnh của @ scw để xóa dữ liệu từ Wikipedia. Bây giờ nó sử dụng requeststhay vì urllib2, Beautiful Soup 4 và nó xuất ra JSON thay vì ghi vào tệp 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
))

Xuất ra một JSON như:

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

    ...

Tôi thích phương pháp này, có thể thay đổi khóa JSON thành "alpha_3" hoặc "alpha_2" thay vì danh sách không?
benck

1

Bạn có thể sử dụng mã này https: // classic.scraperwiki.com/scrapers/iso_3166-1/edit/ - lxml luôn nhanh hơn BeautifulSoup.

Sao chép nó ở đây:

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

Thêm một thư viện đẹp: https://github.com/neuront/python-iso3166



1

Tôi tìm thấy cơ sở dữ liệu rất hay trên repo github - https://github.com/stefangabos/world_countries

Tại thời điểm viết kho bao gồm json, csv, sqlfile 22 ngôn ngữ với các mã quốc gia khác nhau: ISO 3166-1 alpha-3, ISO 3166-1 alpha-2 và tên đầy đủ.

Cơ sở dữ liệu dường như được cập nhật khá thường xuyên



0

một mảng php với 3 mã quốc gia ISO từ bài viết Wikipedia

Tôi sao chép và dán danh sách từ Wikipedia và tạo ra mảng. Có lẽ mã này có thể giúp ai đó tiết kiệm thời gian, muốn tạo ra một loạt mã quốc gia. Tôi không quen thuộc với python, nhưng việc tạo mảng nên tương tự như 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");

0

Nếu bạn không muốn mã cứng danh sách quốc gia (mà tôi không khuyến nghị, vì nó thay đổi rất nhiều), hãy sử dụng URL này để bạn lấy mã 2 chữ cái và tên quốc gia theo định dạng JSON : annsystem.com/api / getCountry

Nó cũng bao gồm các quốc gia thành viên Liên Hợp Quốc và không thuộc Liên Hợp Quốc .

Để biết chi tiết và thông số xem tại đây: flossk.org/en/blog/country-list-good-all


0

Trong trường hợp bất kỳ người dùng R nào vấp phải chủ đề này, đây là giải pháp R:

Các countrycodegói chứa một danh sách đầy đủ các mã quốc gia trong nhiều định dạng khác nhau. Từ tài liệu gói:

Hỗ trợ các sơ đồ mã hóa sau: Nhân vật tương quan chiến tranh, CoW-số, ký tự ISO3, ISO3-số, ký tự ISO2, số IMF, Ủy ban Olympic quốc tế, Số 10-4, số FAO, số Liên hợp quốc, nhân vật Ngân hàng Thế giới, tên quốc gia tiếng Anh ngắn (ISO), lục địa, khu vực.

Gói cũng sẽ chuyển đổi giữa các mã khác nhau và có thể xác định các quốc gia theo tên tiêu chuẩn hoặc không chuẩn bằng các biểu thức thông thường.

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

Chỉ cần sử dụng các công cụ Microsoft Excel Power BI để trích xuất dữ liệu từ Wikipedia. Phải mất hơn 30 giây để tạo một bản excel của trang và sau đó lưu nó vào bất kỳ định dạng nào bạn thích.



-2

Để lấy thông tin quốc gia (Tên, ISO 2 char, ISO 3 char, ...), bạn có thể sử dụng gói NuGet này tại địa chỉ Angrymonkeycloud.com/geography .

Đó là một máy khách .Net miễn phí lấy thông tin từ API RESTful.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.