2014-03-24 200 views
1

我試圖創建一個Python腳本來讀取CSV文件中將讀取國家/地區名稱的列,但它會將該名稱更改爲國家代碼ISO 3166 Alpha2標準。使用Python DictReader/DictWriter將國家/地區代碼轉換爲國家/地區代碼

我已經參考pycountries: Convert Country Names (Possibly Incomplete!) to CountryCodes,但我在代碼中遇到困難。

基本上,我正在一個列中有數百到數千條目的CSV文件,但我需要將全名轉換爲基於ISO 3166標準的國家代碼。我一直在玩「pycountry」和python csv模塊中的各種函數,但是我一直無法使它工作。然後我想用國家代碼覆蓋國家名稱,或者至少輸出爲新文件。建議?

我使用的東西像我的代碼的其餘部分的下面,但我不完全知道如何寫這個國家的轉換我想做的事:

import sys 
import csv 
import pycountry 

csv_file = csv.DictReader(open(sys.argv[1], 'rb')) 

for column in csv_file: 
    X = column['name']... 
+0

我寫了一個命令行程序,可以將存儲在多種格式從多種格式/國家;雖然它不是Python:https://github.com/sshaw/normalize_country#conversion-utility – sshaw

回答

1

遍歷pycountry.countries並初始化一個映射name -> short namealpha2,或alpha3):

mapping = {country.name: country.alpha2 for country in pycountry.countries} 
for column in csv_file: 
    print column['name'], mapping.get(column['name'], 'No country found') 

對於包含該文件:

name 
Kazakhstan 
Ukraine 

它打印:

Kazakhstan KZ 
Ukraine UA 
相關問題