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

2024-03-28 12:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的字典样本:

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文件,以便每行都有一个键和一个值,例如:

Croatia, 191

Cuba, 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':序号不在范围(128),可能是由字典中的Côte d'Ivoire引起的。但是,即使现在可以成功生成csv文件,csv文件本身也包含附加字符b'countryname',而不是countryname。你知道吗

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

如何解决这个特殊问题?你知道吗


Tags: 文件ofcsvkey字典valuedictfile
2条回答

The docs介绍如何处理编码。如您所见,尝试编码单个元素并不能很好地工作。你知道吗

好吧,我建议你用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')

相关问题 更多 >