将Python字典编写为CSV时出现编解码器错误

时间:2016-10-11 03:45:35

标签: python csv dictionary

以下是我的词典示例:

dict = {'Croatia': '191', 'Cuba': '192', 'Curaçao': '531', 
        'Cyprus': '196', 'Czechia': '203',  'Czechoslovakia': '200',
        "Côte d'Ivoire": '384',  "Dem. People's Rep. of Korea": '408',
        'Dem. Rep. of the Congo': '180', 'Denmark': '208'}

我的目标是尝试将单词写入csv文件,这样每行将有一个键和一个值,例如:

  

克罗地亚,191

     

古巴,192

我正在使用csv来实现此目的:

import csv
with open('dict.csv', 'w') as csv_file:
writer = csv.writer(csv_file)
for key, value in dict.items():
   writer.writerow([key.encode('utf-8'), value])

当不使用key.encode('utf-8')时,Python会给出错误'ascii'编解码器无法编码位置1中的字符'\ xf4':ordinal不在范围内(128),大​​概是由词典中的Côte d'Ivoire提供。但是,即使现在可以成功生成csv文件,csv文件本身也包含其他字符b'countryname'而不是countryname

(参见图片以供参考:http://imgur.com/a/WH2gF

如何解决这个特定问题?

2 个答案:

答案 0 :(得分:0)

The docs介绍了如何处理编码。正如您所见,尝试对单个元素进行编码并不能很好地进行编码。

答案 1 :(得分:0)

好吧,我建议您使用Pandas来达到目的。

import pandas as pd

country_name = dict.keys()
cnt = dict.values()
df = pd.DataFrame({'countryname':country_name,'count':cnt})
df.to_csv('result.csv',sep=',',encoding='utf-8')