Python 2.7:'ascii'编解码器在写入文件时无法编码字符u'\ xe9'错误

时间:2016-01-22 13:31:58

标签: python python-2.7 csv unicode

我知道这个问题已被问过不同的时间但不知何故我没有得到结果。

我从网上获取包含字符串Elzéar的数据。在读取CSV文件时,会出现错误标题中提到的错误。

在制作数据时我做了以下操作:

address = str(address).strip()
        address = address.encode('utf8')
        return name+','+address+','+city+','+state+','+phone+','+fax+','+pumps+','+parking+','+general+','+entertainment+','+fuel+','+resturants+','+services+','+technology+','+fuel_cards+','+credit_cards+','+permits+','+money_services+','+security+','+medical+','+longit+','+latit

并将其写为:

with open('records.csv', 'a') as csv_file:
  print(type(data)) #prints <unicode>
  data = data.encode('utf8')     
  csv_file.write(id+','+data+'\n')
  status = 'OK'
  the_file.write(ts+'\t'+url+'\t'+status+'\n')

生成错误:

  

'ascii'编解码器不能编码位置55中的字符u'\ xe9':序数   不在范围内(128)

1 个答案:

答案 0 :(得分:2)

您可以尝试类似(python2.7):

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import codecs
...
with codecs.open('records.csv', 'a', encoding="utf8") as csv_file:
  print(type(data)) #prints <unicode>
  # because data is unicode

  csv_file.write(unicode(id)+u','+data+u'\n')
  status = u'OK'
  the_file.write(unicode(ts, encoding="utf8")+u'\t'+unicode(url, encoding="utf8")+u'\t'+status+u'\n')

主要思想是尽可能使用unicode并在输出时返回str(最好不要在str上运行)。

相关问题