【发布时间】:2023-04-04 08:54:01
【问题描述】:
我已经看到了很多有关此问题的示例,但还没有找到适合我的简单解决方案。我仍然收到错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xad' in position 5: ordinal not in range(128)
这是我根据 stackoverflow 上提出的类似问题汇总的代码。
f = open(out_filepath, 'w')
writer = csv.DictWriter(f, fieldnames, extrasaction='ignore')
headers = dict([(header, header) for header in fieldnames])
data = [headers]
data.extend([row for row in rows]) # add data rows
for row in data:
try:
writer.writerow(row)
except:
for value in row.itervalues():
for s in value:
try:
unicode(s).encode("utf-8")
except:
s = ''
writer.writerow(row)
f.close()
这是我正在尝试的更新代码,但仍然给我错误:
for row in data:
try:
writer.writerow(row)
except:
for key in row:
value = row[key]
letterlist = list(value)
for i in range(len(letterlist)):
try:
letterlist[i].decode('string_escape')
letterlist[i].encode('ascii', 'ignore')
except:
print 'Letter excluded from ' +key+' '+ str(letterlist)
letterlist[i] = ''
value = ''.join(letterlist)
row[key] = value
#print row
writer.writerow(row)
【问题讨论】:
-
即latin-1编码
u'\xad'.encode("latin-1") -
如果是 latin-1 编码,我该如何修复我所拥有的,以免出现错误?
-
试试
writer.writerow([s.encode("utf-8") for s in row]),你的数据是unicode吗? -
我仍然收到 UnicodeEncodeError。
-
您的实际数据是什么样的。我可以使用上面的代码将 u
'\xad'写入文件