首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用csv.writer写csv

用csv.writer写csv
EN

Stack Overflow用户
提问于 2014-05-14 09:44:58
回答 1查看 532关注 0票数 0

我试图用‘写字符串到一个csv文件:

代码语言:javascript
复制
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()

行看起来是这样的:

代码语言:javascript
复制
[123, "str", "str2 ®"]

我试图写入csv的字符串是从xml检索的,我认为xml编码为utf-8。

我得到了错误:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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()

但我还是会犯同样的错误。有人能帮忙吗?被困了一段时间..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 09:49:26

您有一个Unicode值,而不是字节字符串。对以下内容进行编码:

代码语言:javascript
复制
for row in data:
    row = [c.encode('utf8') if isinstance(c, unicode) else c for c in row]:
    csv_writer.writerow(row)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23651048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档