使用Python DictReader / DictWriter将国家/地区名称转换为国家/地区代码

时间:2014-03-24 17:53:17

标签: python csv

我正在尝试创建一个Python脚本来读取CSV文件中将读取国家/地区名称的列,但随后它将使用ISO 3166 Alpha2标准将该名称更改为国家/地区代码。

我引用了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']...

1 个答案:

答案 0 :(得分:1)

迭代pycountry.countries并初始化地图name -> short namealpha2alpha3):

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