我试图用‘写字符串到一个csv文件:
csvfile = open(destination, "wb")
csv_writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL, delimiter='\t')
for row in data:
csv_writer.writerow(row)
csvfile.close()行看起来是这样的:
[123, "str", "str2 ®"]我试图写入csv的字符串是从xml检索的,我认为xml编码为utf-8。
我得到了错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/ec2-user/django/app/models.py", line 94, in import_data
load_to_csv(out, out_data)
File "/home/ec2-user/django/utils/util.py", line 90, in load_to_csv
csv_writer.writerow(row)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xae' in position 66: ordinal not in range(128)然后,我尝试将字符串编码为utf-8:
csvfile = open(destination, "wb")
csv_writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL, delimiter='\t')
for row in data:
for i, r in enumerate(row):
if type(r) is str:
row[i] = r.encode('utf-8')
csv_writer.writerow(row)
csvfile.close()但我还是会犯同样的错误。有人能帮忙吗?被困了一段时间..。
发布于 2014-05-14 09:49:26
您有一个Unicode值,而不是字节字符串。对以下内容进行编码:
for row in data:
row = [c.encode('utf8') if isinstance(c, unicode) else c for c in row]:
csv_writer.writerow(row)https://stackoverflow.com/questions/23651048
复制相似问题