【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode character u'\u0627' in position 0: ordinal not in range(128)UnicodeEncodeError:'ascii' 编解码器无法在位置 0 编码字符 u'\u0627':序数不在范围内(128)
【发布时间】:2020-01-08 16:19:58
【问题描述】:

当我尝试将数据保存在 csv 文件中时,标题中出现错误,我不知道如何解决。

# -*- coding: utf-8 -*-
keys = sorted(self.Details.keys())     #### 1st sort the values of dictionary list
with open("test.csv", "wb") as outfile:    
    writer = csv.writer(outfile, delimiter = "\t")
    writer.writerow(keys)
    writer.writerows(zip(*[self.Details[key] for key in keys]))

【问题讨论】:

  • 到底是什么问题?错误消息会告诉您究竟出了什么问题,您是否尝试过或进行过任何研究?
  • 另外,您的代码过于复杂。如果您的数据在字典中,只需使用 csv.DictWriter
  • Python 2 8 天前正式停产。我建议你切换到 Python 3,因为这个问题的解决方法很简单。

标签: python csv export-to-csv python-2.x


【解决方案1】:

csv 写入时默认为 ascii,但您的数据中的字符串超出 ascii,因此如果您使用的是 python3,请尝试:

with open("test.csv", "wb", encoding='utf-8')

如果你用的是python2,可以试试这个包unicodecsv:https://pypi.org/project/unicodecsv/

【讨论】:

  • 我确实做到了,但得到了这个错误,告诉我 encoding is not function argument TypeError: 'encoding' is an invalid keyword argument for this function
  • 你用的好像是Python 2,可以的话请切换到Python 3--今年年初不再支持Python 2:pythonclock.org
  • @OmarKamelMostafa encoding 是 python3 中的一个参数。如果你在python2,可以使用unicodecsv:pypi.org/project/unicodecsv
猜你喜欢
  • 2011-07-05
  • 2016-08-26
  • 2017-03-29
  • 2018-07-10
  • 2012-04-14
  • 2016-09-05
  • 2013-02-11
  • 2012-05-06
  • 2019-12-15
相关资源
最近更新 更多