我知道这个问题已被问过不同的时间但不知何故我没有得到结果。
我从网上获取包含字符串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)
答案 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上运行)。