我正在尝试创建一个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']...

最佳答案

遍历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

关于python - 使用Python DictReader/DictWriter将国家/地区名称转换为国家/地区代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22616944/

10-14 16:37