ledger: ISO 3166-1 country-code extraction (249 rows)

This commit is contained in:
ledger committed 2026-11-05 03:34:32 +00:00
1 parent 85c4f7f05d
commit 70edcd4b53
3 files changed
+388

No files matched your search

@@ -0,0 +1,250 @@
country,alpha2,alpha3,numeric,independent
Afghanistan,AF,AFG,004,Yes
Albania,AL,ALB,008,Yes
Algeria,DZ,DZA,012,Yes
American Samoa,AS,ASM,016,No
Andorra,AD,AND,020,Yes
Angola,AO,AGO,024,Yes
Anguilla,AI,AIA,660,No
Antarctica,AQ,ATA,010,No
Antigua and Barbuda,AG,ATG,028,Yes
Argentina,AR,ARG,032,Yes
Armenia,AM,ARM,051,Yes
Aruba,AW,ABW,533,No
Australia,AU,AUS,036,Yes
Austria,AT,AUT,040,Yes
Azerbaijan,AZ,AZE,031,Yes
Bahamas,BS,BHS,044,Yes
Bahrain,BH,BHR,048,Yes
Bangladesh,BD,BGD,050,Yes
Barbados,BB,BRB,052,Yes
Belarus,BY,BLR,112,Yes
Belgium,BE,BEL,056,Yes
Belize,BZ,BLZ,084,Yes
Benin,BJ,BEN,204,Yes
Bermuda,BM,BMU,060,No
Bhutan,BT,BTN,064,Yes
"Bolivia, Plurinational State of",BO,BOL,068,Yes
"Bonaire, Sint Eustatius and Saba",BQ,BES,535,No
Bosnia and Herzegovina,BA,BIH,070,Yes
Botswana,BW,BWA,072,Yes
Bouvet Island,BV,BVT,074,No
Brazil,BR,BRA,076,Yes
British Indian Ocean Territory,IO,IOT,086,No
Brunei Darussalam,BN,BRN,096,Yes
Bulgaria,BG,BGR,100,Yes
Burkina Faso,BF,BFA,854,Yes
Burundi,BI,BDI,108,Yes
Cabo Verde,CV,CPV,132,Yes
Cambodia,KH,KHM,116,Yes
Cameroon,CM,CMR,120,Yes
Canada,CA,CAN,124,Yes
Cayman Islands,KY,CYM,136,No
Central African Republic,CF,CAF,140,Yes
Chad,TD,TCD,148,Yes
Chile,CL,CHL,152,Yes
China,CN,CHN,156,Yes
Christmas Island,CX,CXR,162,No
Cocos (Keeling) Islands,CC,CCK,166,No
Colombia,CO,COL,170,Yes
Comoros,KM,COM,174,Yes
Congo,CG,COG,178,Yes
"Congo, Democratic Republic of the",CD,COD,180,Yes
Cook Islands,CK,COK,184,No
Costa Rica,CR,CRI,188,Yes
Croatia,HR,HRV,191,Yes
Cuba,CU,CUB,192,Yes
Curaçao,CW,CUW,531,No
Cyprus,CY,CYP,196,Yes
Czechia,CZ,CZE,203,Yes
Côte d'Ivoire,CI,CIV,384,Yes
Denmark,DK,DNK,208,Yes
Djibouti,DJ,DJI,262,Yes
Dominica,DM,DMA,212,Yes
Dominican Republic,DO,DOM,214,Yes
Ecuador,EC,ECU,218,Yes
Egypt,EG,EGY,818,Yes
El Salvador,SV,SLV,222,Yes
Equatorial Guinea,GQ,GNQ,226,Yes
Eritrea,ER,ERI,232,Yes
Estonia,EE,EST,233,Yes
Eswatini,SZ,SWZ,748,Yes
Ethiopia,ET,ETH,231,Yes
Falkland Islands (Malvinas),FK,FLK,238,No
Faroe Islands,FO,FRO,234,No
Fiji,FJ,FJI,242,Yes
Finland,FI,FIN,246,Yes
France,FR,FRA,250,Yes
French Guiana,GF,GUF,254,No
French Polynesia,PF,PYF,258,No
French Southern Territories,TF,ATF,260,No
Gabon,GA,GAB,266,Yes
Gambia,GM,GMB,270,Yes
Georgia,GE,GEO,268,Yes
Germany,DE,DEU,276,Yes
Ghana,GH,GHA,288,Yes
Gibraltar,GI,GIB,292,No
Greece,GR,GRC,300,Yes
Greenland,GL,GRL,304,No
Grenada,GD,GRD,308,Yes
Guadeloupe,GP,GLP,312,No
Guam,GU,GUM,316,No
Guatemala,GT,GTM,320,Yes
Guernsey,GG,GGY,831,No
Guinea,GN,GIN,324,Yes
Guinea-Bissau,GW,GNB,624,Yes
Guyana,GY,GUY,328,Yes
Haiti,HT,HTI,332,Yes
Heard Island and McDonald Islands,HM,HMD,334,No
Holy See,VA,VAT,336,Yes
Honduras,HN,HND,340,Yes
Hong Kong,HK,HKG,344,No
Hungary,HU,HUN,348,Yes
Iceland,IS,ISL,352,Yes
India,IN,IND,356,Yes
Indonesia,ID,IDN,360,Yes
"Iran, Islamic Republic of",IR,IRN,364,Yes
Iraq,IQ,IRQ,368,Yes
Ireland,IE,IRL,372,Yes
Isle of Man,IM,IMN,833,No
Israel,IL,ISR,376,Yes
Italy,IT,ITA,380,Yes
Jamaica,JM,JAM,388,Yes
Japan,JP,JPN,392,Yes
Jersey,JE,JEY,832,No
Jordan,JO,JOR,400,Yes
Kazakhstan,KZ,KAZ,398,Yes
Kenya,KE,KEN,404,Yes
Kiribati,KI,KIR,296,Yes
"Korea, Democratic People's Republic of",KP,PRK,408,Yes
"Korea, Republic of",KR,KOR,410,Yes
Kuwait,KW,KWT,414,Yes
Kyrgyzstan,KG,KGZ,417,Yes
Lao People's Democratic Republic,LA,LAO,418,Yes
Latvia,LV,LVA,428,Yes
Lebanon,LB,LBN,422,Yes
Lesotho,LS,LSO,426,Yes
Liberia,LR,LBR,430,Yes
Libya,LY,LBY,434,Yes
Liechtenstein,LI,LIE,438,Yes
Lithuania,LT,LTU,440,Yes
Luxembourg,LU,LUX,442,Yes
Macao,MO,MAC,446,No
Madagascar,MG,MDG,450,Yes
Malawi,MW,MWI,454,Yes
Malaysia,MY,MYS,458,Yes
Maldives,MV,MDV,462,Yes
Mali,ML,MLI,466,Yes
Malta,MT,MLT,470,Yes
Marshall Islands,MH,MHL,584,Yes
Martinique,MQ,MTQ,474,No
Mauritania,MR,MRT,478,Yes
Mauritius,MU,MUS,480,Yes
Mayotte,YT,MYT,175,No
Mexico,MX,MEX,484,Yes
"Micronesia, Federated States of",FM,FSM,583,Yes
"Moldova, Republic of",MD,MDA,498,Yes
Monaco,MC,MCO,492,Yes
Mongolia,MN,MNG,496,Yes
Montenegro,ME,MNE,499,Yes
Montserrat,MS,MSR,500,No
Morocco,MA,MAR,504,Yes
Mozambique,MZ,MOZ,508,Yes
Myanmar,MM,MMR,104,Yes
Namibia,NA,NAM,516,Yes
Naoero,NR,NRU,520,Yes
Nepal,NP,NPL,524,Yes
"Netherlands, Kingdom of the",NL,NLD,528,Yes
New Caledonia,NC,NCL,540,No
New Zealand,NZ,NZL,554,Yes
Nicaragua,NI,NIC,558,Yes
Niger,NE,NER,562,Yes
Nigeria,NG,NGA,566,Yes
Niue,NU,NIU,570,No
Norfolk Island,NF,NFK,574,No
North Macedonia,MK,MKD,807,Yes
Northern Mariana Islands,MP,MNP,580,No
Norway,NO,NOR,578,Yes
Oman,OM,OMN,512,Yes
Pakistan,PK,PAK,586,Yes
Palau,PW,PLW,585,Yes
"Palestine, State of",PS,PSE,275,No
Panama,PA,PAN,591,Yes
Papua New Guinea,PG,PNG,598,Yes
Paraguay,PY,PRY,600,Yes
Peru,PE,PER,604,Yes
Philippines,PH,PHL,608,Yes
Pitcairn,PN,PCN,612,No
Poland,PL,POL,616,Yes
Portugal,PT,PRT,620,Yes
Puerto Rico,PR,PRI,630,No
Qatar,QA,QAT,634,Yes
Romania,RO,ROU,642,Yes
Russian Federation,RU,RUS,643,Yes
Rwanda,RW,RWA,646,Yes
Réunion,RE,REU,638,No
Saint Barthélemy,BL,BLM,652,No
"Saint Helena, Ascension and Tristan da Cunha",SH,SHN,654,No
Saint Kitts and Nevis,KN,KNA,659,Yes
Saint Lucia,LC,LCA,662,Yes
Saint Martin (French part),MF,MAF,663,No
Saint Pierre and Miquelon,PM,SPM,666,No
Saint Vincent and the Grenadines,VC,VCT,670,Yes
Samoa,WS,WSM,882,Yes
San Marino,SM,SMR,674,Yes
Sao Tome and Principe,ST,STP,678,Yes
Saudi Arabia,SA,SAU,682,Yes
Senegal,SN,SEN,686,Yes
Serbia,RS,SRB,688,Yes
Seychelles,SC,SYC,690,Yes
Sierra Leone,SL,SLE,694,Yes
Singapore,SG,SGP,702,Yes
Sint Maarten (Dutch part),SX,SXM,534,No
Slovakia,SK,SVK,703,Yes
Slovenia,SI,SVN,705,Yes
Solomon Islands,SB,SLB,090,Yes
Somalia,SO,SOM,706,Yes
South Africa,ZA,ZAF,710,Yes
South Georgia and the South Sandwich Islands,GS,SGS,239,No
South Sudan,SS,SSD,728,Yes
Spain,ES,ESP,724,Yes
Sri Lanka,LK,LKA,144,Yes
Sudan,SD,SDN,729,Yes
Suriname,SR,SUR,740,Yes
Svalbard and Jan Mayen,SJ,SJM,744,No
Sweden,SE,SWE,752,Yes
Switzerland,CH,CHE,756,Yes
Syrian Arab Republic,SY,SYR,760,Yes
"Taiwan, Province of China",TW,TWN,158,No
Tajikistan,TJ,TJK,762,Yes
"Tanzania, United Republic of",TZ,TZA,834,Yes
Thailand,TH,THA,764,Yes
Timor-Leste,TL,TLS,626,Yes
Togo,TG,TGO,768,Yes
Tokelau,TK,TKL,772,No
Tonga,TO,TON,776,Yes
Trinidad and Tobago,TT,TTO,780,Yes
Tunisia,TN,TUN,788,Yes
Turkmenistan,TM,TKM,795,Yes
Turks and Caicos Islands,TC,TCA,796,No
Tuvalu,TV,TUV,798,Yes
Türkiye,TR,TUR,792,Yes
Uganda,UG,UGA,800,Yes
Ukraine,UA,UKR,804,Yes
United Arab Emirates,AE,ARE,784,Yes
United Kingdom of Great Britain and Northern Ireland,GB,GBR,826,Yes
United States Minor Outlying Islands,UM,UMI,581,No
United States of America,US,USA,840,Yes
Uruguay,UY,URY,858,Yes
Uzbekistan,UZ,UZB,860,Yes
Vanuatu,VU,VUT,548,Yes
"Venezuela, Bolivarian Republic of",VE,VEN,862,Yes
Viet Nam,VN,VNM,704,Yes
Virgin Islands (British),VG,VGB,092,No
Virgin Islands (U.S.),VI,VIR,850,No
Wallis and Futuna,WF,WLF,876,No
Western Sahara,EH,ESH,732,No
Yemen,YE,YEM,887,Yes
Zambia,ZM,ZMB,894,Yes
Zimbabwe,ZW,ZWE,716,Yes
Åland Islands,AX,ALA,248,No
1 country alpha2 alpha3 numeric independent
2 Afghanistan AF AFG 004 Yes
3 Albania AL ALB 008 Yes
4 Algeria DZ DZA 012 Yes
5 American Samoa AS ASM 016 No
6 Andorra AD AND 020 Yes
7 Angola AO AGO 024 Yes
8 Anguilla AI AIA 660 No
9 Antarctica AQ ATA 010 No
10 Antigua and Barbuda AG ATG 028 Yes
11 Argentina AR ARG 032 Yes
12 Armenia AM ARM 051 Yes
13 Aruba AW ABW 533 No
14 Australia AU AUS 036 Yes
15 Austria AT AUT 040 Yes
16 Azerbaijan AZ AZE 031 Yes
17 Bahamas BS BHS 044 Yes
18 Bahrain BH BHR 048 Yes
19 Bangladesh BD BGD 050 Yes
20 Barbados BB BRB 052 Yes
21 Belarus BY BLR 112 Yes
22 Belgium BE BEL 056 Yes
23 Belize BZ BLZ 084 Yes
24 Benin BJ BEN 204 Yes
25 Bermuda BM BMU 060 No
26 Bhutan BT BTN 064 Yes
27 Bolivia, Plurinational State of BO BOL 068 Yes
28 Bonaire, Sint Eustatius and Saba BQ BES 535 No
29 Bosnia and Herzegovina BA BIH 070 Yes
30 Botswana BW BWA 072 Yes
31 Bouvet Island BV BVT 074 No
32 Brazil BR BRA 076 Yes
33 British Indian Ocean Territory IO IOT 086 No
34 Brunei Darussalam BN BRN 096 Yes
35 Bulgaria BG BGR 100 Yes
36 Burkina Faso BF BFA 854 Yes
37 Burundi BI BDI 108 Yes
38 Cabo Verde CV CPV 132 Yes
39 Cambodia KH KHM 116 Yes
40 Cameroon CM CMR 120 Yes
41 Canada CA CAN 124 Yes
42 Cayman Islands KY CYM 136 No
43 Central African Republic CF CAF 140 Yes
44 Chad TD TCD 148 Yes
45 Chile CL CHL 152 Yes
46 China CN CHN 156 Yes
47 Christmas Island CX CXR 162 No
48 Cocos (Keeling) Islands CC CCK 166 No
49 Colombia CO COL 170 Yes
50 Comoros KM COM 174 Yes
51 Congo CG COG 178 Yes
52 Congo, Democratic Republic of the CD COD 180 Yes
53 Cook Islands CK COK 184 No
54 Costa Rica CR CRI 188 Yes
55 Croatia HR HRV 191 Yes
56 Cuba CU CUB 192 Yes
57 Curaçao CW CUW 531 No
58 Cyprus CY CYP 196 Yes
59 Czechia CZ CZE 203 Yes
60 Côte d'Ivoire CI CIV 384 Yes
61 Denmark DK DNK 208 Yes
62 Djibouti DJ DJI 262 Yes
63 Dominica DM DMA 212 Yes
64 Dominican Republic DO DOM 214 Yes
65 Ecuador EC ECU 218 Yes
66 Egypt EG EGY 818 Yes
67 El Salvador SV SLV 222 Yes
68 Equatorial Guinea GQ GNQ 226 Yes
69 Eritrea ER ERI 232 Yes
70 Estonia EE EST 233 Yes
71 Eswatini SZ SWZ 748 Yes
72 Ethiopia ET ETH 231 Yes
73 Falkland Islands (Malvinas) FK FLK 238 No
74 Faroe Islands FO FRO 234 No
75 Fiji FJ FJI 242 Yes
76 Finland FI FIN 246 Yes
77 France FR FRA 250 Yes
78 French Guiana GF GUF 254 No
79 French Polynesia PF PYF 258 No
80 French Southern Territories TF ATF 260 No
81 Gabon GA GAB 266 Yes
82 Gambia GM GMB 270 Yes
83 Georgia GE GEO 268 Yes
84 Germany DE DEU 276 Yes
85 Ghana GH GHA 288 Yes
86 Gibraltar GI GIB 292 No
87 Greece GR GRC 300 Yes
88 Greenland GL GRL 304 No
89 Grenada GD GRD 308 Yes
90 Guadeloupe GP GLP 312 No
91 Guam GU GUM 316 No
92 Guatemala GT GTM 320 Yes
93 Guernsey GG GGY 831 No
94 Guinea GN GIN 324 Yes
95 Guinea-Bissau GW GNB 624 Yes
96 Guyana GY GUY 328 Yes
97 Haiti HT HTI 332 Yes
98 Heard Island and McDonald Islands HM HMD 334 No
99 Holy See VA VAT 336 Yes
100 Honduras HN HND 340 Yes
101 Hong Kong HK HKG 344 No
102 Hungary HU HUN 348 Yes
103 Iceland IS ISL 352 Yes
104 India IN IND 356 Yes
105 Indonesia ID IDN 360 Yes
106 Iran, Islamic Republic of IR IRN 364 Yes
107 Iraq IQ IRQ 368 Yes
108 Ireland IE IRL 372 Yes
109 Isle of Man IM IMN 833 No
110 Israel IL ISR 376 Yes
111 Italy IT ITA 380 Yes
112 Jamaica JM JAM 388 Yes
113 Japan JP JPN 392 Yes
114 Jersey JE JEY 832 No
115 Jordan JO JOR 400 Yes
116 Kazakhstan KZ KAZ 398 Yes
117 Kenya KE KEN 404 Yes
118 Kiribati KI KIR 296 Yes
119 Korea, Democratic People's Republic of KP PRK 408 Yes
120 Korea, Republic of KR KOR 410 Yes
121 Kuwait KW KWT 414 Yes
122 Kyrgyzstan KG KGZ 417 Yes
123 Lao People's Democratic Republic LA LAO 418 Yes
124 Latvia LV LVA 428 Yes
125 Lebanon LB LBN 422 Yes
126 Lesotho LS LSO 426 Yes
127 Liberia LR LBR 430 Yes
128 Libya LY LBY 434 Yes
129 Liechtenstein LI LIE 438 Yes
130 Lithuania LT LTU 440 Yes
131 Luxembourg LU LUX 442 Yes
132 Macao MO MAC 446 No
133 Madagascar MG MDG 450 Yes
134 Malawi MW MWI 454 Yes
135 Malaysia MY MYS 458 Yes
136 Maldives MV MDV 462 Yes
137 Mali ML MLI 466 Yes
138 Malta MT MLT 470 Yes
139 Marshall Islands MH MHL 584 Yes
140 Martinique MQ MTQ 474 No
141 Mauritania MR MRT 478 Yes
142 Mauritius MU MUS 480 Yes
143 Mayotte YT MYT 175 No
144 Mexico MX MEX 484 Yes
145 Micronesia, Federated States of FM FSM 583 Yes
146 Moldova, Republic of MD MDA 498 Yes
147 Monaco MC MCO 492 Yes
148 Mongolia MN MNG 496 Yes
149 Montenegro ME MNE 499 Yes
150 Montserrat MS MSR 500 No
151 Morocco MA MAR 504 Yes
152 Mozambique MZ MOZ 508 Yes
153 Myanmar MM MMR 104 Yes
154 Namibia NA NAM 516 Yes
155 Naoero NR NRU 520 Yes
156 Nepal NP NPL 524 Yes
157 Netherlands, Kingdom of the NL NLD 528 Yes
158 New Caledonia NC NCL 540 No
159 New Zealand NZ NZL 554 Yes
160 Nicaragua NI NIC 558 Yes
161 Niger NE NER 562 Yes
162 Nigeria NG NGA 566 Yes
163 Niue NU NIU 570 No
164 Norfolk Island NF NFK 574 No
165 North Macedonia MK MKD 807 Yes
166 Northern Mariana Islands MP MNP 580 No
167 Norway NO NOR 578 Yes
168 Oman OM OMN 512 Yes
169 Pakistan PK PAK 586 Yes
170 Palau PW PLW 585 Yes
171 Palestine, State of PS PSE 275 No
172 Panama PA PAN 591 Yes
173 Papua New Guinea PG PNG 598 Yes
174 Paraguay PY PRY 600 Yes
175 Peru PE PER 604 Yes
176 Philippines PH PHL 608 Yes
177 Pitcairn PN PCN 612 No
178 Poland PL POL 616 Yes
179 Portugal PT PRT 620 Yes
180 Puerto Rico PR PRI 630 No
181 Qatar QA QAT 634 Yes
182 Romania RO ROU 642 Yes
183 Russian Federation RU RUS 643 Yes
184 Rwanda RW RWA 646 Yes
185 Réunion RE REU 638 No
186 Saint Barthélemy BL BLM 652 No
187 Saint Helena, Ascension and Tristan da Cunha SH SHN 654 No
188 Saint Kitts and Nevis KN KNA 659 Yes
189 Saint Lucia LC LCA 662 Yes
190 Saint Martin (French part) MF MAF 663 No
191 Saint Pierre and Miquelon PM SPM 666 No
192 Saint Vincent and the Grenadines VC VCT 670 Yes
193 Samoa WS WSM 882 Yes
194 San Marino SM SMR 674 Yes
195 Sao Tome and Principe ST STP 678 Yes
196 Saudi Arabia SA SAU 682 Yes
197 Senegal SN SEN 686 Yes
198 Serbia RS SRB 688 Yes
199 Seychelles SC SYC 690 Yes
200 Sierra Leone SL SLE 694 Yes
201 Singapore SG SGP 702 Yes
202 Sint Maarten (Dutch part) SX SXM 534 No
203 Slovakia SK SVK 703 Yes
204 Slovenia SI SVN 705 Yes
205 Solomon Islands SB SLB 090 Yes
206 Somalia SO SOM 706 Yes
207 South Africa ZA ZAF 710 Yes
208 South Georgia and the South Sandwich Islands GS SGS 239 No
209 South Sudan SS SSD 728 Yes
210 Spain ES ESP 724 Yes
211 Sri Lanka LK LKA 144 Yes
212 Sudan SD SDN 729 Yes
213 Suriname SR SUR 740 Yes
214 Svalbard and Jan Mayen SJ SJM 744 No
215 Sweden SE SWE 752 Yes
216 Switzerland CH CHE 756 Yes
217 Syrian Arab Republic SY SYR 760 Yes
218 Taiwan, Province of China TW TWN 158 No
219 Tajikistan TJ TJK 762 Yes
220 Tanzania, United Republic of TZ TZA 834 Yes
221 Thailand TH THA 764 Yes
222 Timor-Leste TL TLS 626 Yes
223 Togo TG TGO 768 Yes
224 Tokelau TK TKL 772 No
225 Tonga TO TON 776 Yes
226 Trinidad and Tobago TT TTO 780 Yes
227 Tunisia TN TUN 788 Yes
228 Turkmenistan TM TKM 795 Yes
229 Turks and Caicos Islands TC TCA 796 No
230 Tuvalu TV TUV 798 Yes
231 Türkiye TR TUR 792 Yes
232 Uganda UG UGA 800 Yes
233 Ukraine UA UKR 804 Yes
234 United Arab Emirates AE ARE 784 Yes
235 United Kingdom of Great Britain and Northern Ireland GB GBR 826 Yes
236 United States Minor Outlying Islands UM UMI 581 No
237 United States of America US USA 840 Yes
238 Uruguay UY URY 858 Yes
239 Uzbekistan UZ UZB 860 Yes
240 Vanuatu VU VUT 548 Yes
241 Venezuela, Bolivarian Republic of VE VEN 862 Yes
242 Viet Nam VN VNM 704 Yes
243 Virgin Islands (British) VG VGB 092 No
244 Virgin Islands (U.S.) VI VIR 850 No
245 Wallis and Futuna WF WLF 876 No
246 Western Sahara EH ESH 732 No
247 Yemen YE YEM 887 Yes
248 Zambia ZM ZMB 894 Yes
249 Zimbabwe ZW ZWE 716 Yes
250 Åland Islands AX ALA 248 No
@@ -0,0 +1,50 @@
# ISO 3166-1 extraction — Extract the ISO 3166-1 country-code table from the English Wikipedia (rendered HTML).
Source: English Wikipedia, ISO 3166-1 article (rendered table)
Rows: 249
| country | alpha-2 | alpha-3 | numeric | independent |
|---|---|---|---|---|
| Afghanistan | AF | AFG | 004 | Yes |
| Albania | AL | ALB | 008 | Yes |
| Algeria | DZ | DZA | 012 | Yes |
| American Samoa | AS | ASM | 016 | No |
| Andorra | AD | AND | 020 | Yes |
| Angola | AO | AGO | 024 | Yes |
| Anguilla | AI | AIA | 660 | No |
| Antarctica | AQ | ATA | 010 | No |
| Antigua and Barbuda | AG | ATG | 028 | Yes |
| Argentina | AR | ARG | 032 | Yes |
| Armenia | AM | ARM | 051 | Yes |
| Aruba | AW | ABW | 533 | No |
| Australia | AU | AUS | 036 | Yes |
| Austria | AT | AUT | 040 | Yes |
| Azerbaijan | AZ | AZE | 031 | Yes |
| Bahamas | BS | BHS | 044 | Yes |
| Bahrain | BH | BHR | 048 | Yes |
| Bangladesh | BD | BGD | 050 | Yes |
| Barbados | BB | BRB | 052 | Yes |
| Belarus | BY | BLR | 112 | Yes |
| Belgium | BE | BEL | 056 | Yes |
| Belize | BZ | BLZ | 084 | Yes |
| Benin | BJ | BEN | 204 | Yes |
| Bermuda | BM | BMU | 060 | No |
| Bhutan | BT | BTN | 064 | Yes |
| Bolivia, Plurinational State of | BO | BOL | 068 | Yes |
| Bonaire, Sint Eustatius and Saba | BQ | BES | 535 | No |
| Bosnia and Herzegovina | BA | BIH | 070 | Yes |
| Botswana | BW | BWA | 072 | Yes |
| Bouvet Island | BV | BVT | 074 | No |
| Brazil | BR | BRA | 076 | Yes |
| British Indian Ocean Territory | IO | IOT | 086 | No |
| Brunei Darussalam | BN | BRN | 096 | Yes |
| Bulgaria | BG | BGR | 100 | Yes |
| Burkina Faso | BF | BFA | 854 | Yes |
| Burundi | BI | BDI | 108 | Yes |
| Cabo Verde | CV | CPV | 132 | Yes |
| Cambodia | KH | KHM | 116 | Yes |
| Cameroon | CM | CMR | 120 | Yes |
| Canada | CA | CAN | 124 | Yes |
(40 of 249 rows shown; full table in the .csv)
@@ -0,0 +1,88 @@
#!/usr/bin/env python3
"""Verify the ISO 3166-1 extraction CSV.
Usage: python3 verify_ledger_iso3166.py <csv_path>
Exit 0 = artifact correct; nonzero = wrong.
"""
import csv
import re
import sys
EXPECTED_HEADER = ["country", "alpha2", "alpha3", "numeric", "independent"]
# (country, alpha2, alpha3, numeric) spot checks against the ISO 3166-1 standard.
KNOWN = {
"Afghanistan": ("AF", "AFG", "004"),
"United States": ("US", "USA", "840"),
"United Kingdom": ("GB", "GBR", "826"),
"China": ("CN", "CHN", "156"),
"Åland Islands": ("AX", "ALA", "248"),
"South Korea": ("KR", "KOR", "410"),
"Czechia": ("CZ", "CZE", "203"),
"Iran": ("IR", "IRN", "364"),
"Russia": ("RU", "RUS", "643"),
"Vietnam": ("VN", "VNM", "704"),
}
def main():
if len(sys.argv) != 2:
print("usage: verify_ledger_iso3166.py <csv>")
sys.exit(2)
path = sys.argv[1]
with open(path, newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
header = reader.fieldnames
rows = list(reader)
errors = []
if header != EXPECTED_HEADER:
errors.append("header mismatch: %r" % header)
if len(rows) != 249:
errors.append("row count %d != 249" % len(rows))
seen = set()
for i, r in enumerate(rows, start=2):
c = r.get("country", "")
a2 = r.get("alpha2", "")
a3 = r.get("alpha3", "")
num = r.get("numeric", "")
ind = r.get("independent", "")
if re.search(r"\[[^\]]*\]", c):
errors.append("row %d: footnote marker in country %r" % (i, c))
if re.search(r"\[[^\]]*\]", ind):
errors.append("row %d: footnote marker in independent %r" % (i, ind))
if not c or not a2 or not a3 or not num or not ind:
errors.append("row %d: empty field %r" % (i, r))
if not re.fullmatch(r"[A-Za-z]{2}", a2):
errors.append("row %d: bad alpha2 %r" % (i, a2))
if not re.fullmatch(r"[A-Za-z]{3}", a3):
errors.append("row %d: bad alpha3 %r" % (i, a3))
if not re.fullmatch(r"\d{3}", num):
errors.append("row %d: bad numeric %r" % (i, num))
if ind not in ("Yes", "No"):
errors.append("row %d: bad independent %r" % (i, ind))
key = (a2, a3)
if key in seen:
errors.append("row %d: duplicate alpha3 %s" % (i, a3))
seen.add(key)
if c in KNOWN:
exp = KNOWN[c]
if (a2, a3, num) != exp:
errors.append("row %d: %r got (%s,%s,%s) want %s" % (i, c, a2, a3, num, exp))
if errors:
print("VERIFY FAILED (%d errors)" % len(errors))
for e in errors[:20]:
print(" -", e)
sys.exit(1)
print("OK: %d rows verified, header=%s" % (len(rows), header))
sys.exit(0)
if __name__ == "__main__":
main()