2014-03-24 143 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 
相关问题