首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python上的Unicode错误

Python上的Unicode错误
EN

Stack Overflow用户
提问于 2015-09-30 15:27:56
回答 2查看 4.8K关注 0票数 2

因此,我试图用一个csv表创建一个包含unicode字符的表:

代码语言:javascript
运行
复制
with open('test1.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    [writer.writerow(r) for r in table]

但是,每当我试图运行我的程序时,我都会得到这个错误:

代码语言:javascript
运行
复制
UnicodeEncodeError: 'ascii' codec can't encode characters in position 8-10: ordinal not in range(128)

我该怎么解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 16:25:32

假设您使用的是Python2:

代码语言:javascript
运行
复制
with open('test1.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile)
    for r in table:
        writer.writerow([x.encode('utf-8') for x in r])

当然,在打开csv文件时,还需要使用相同的编码对其进行解码:

代码语言:javascript
运行
复制
with open('test1.csv') as csvfile:
    reader = csv.reader(csvfile.decode('utf-8'))

(注意:如果您使用Python3,所有这些都是不必要的-您最初的示例会很好地工作)。

票数 2
EN

Stack Overflow用户

发布于 2015-09-30 15:34:26

首先,不需要使用列表理解来编写csv文件;其次,如果使用python 2.X,可以使用codecs模块以正确的编码打开文件;如果使用python3.x,则可以在open函数中使用encoding参数。

还请注意,由于write方法使用了默认编码,如果仍然有unicode错误,则可以在write方法中使用str.encode()方法。

Python2.x:

代码语言:javascript
运行
复制
import codecs
with codecs.open(filename, 'w', encoding='utf-8') as csvfile:
     writer = csv.writer(csvfile)
     for r in table:
         writer.writerow(r.encode('utf-8'))

Python3.x:

代码语言:javascript
运行
复制
with open(filename, 'wb', encoding='utf-8') as csvfile:
     writer = csv.writer(csvfile)
     for r in table:
         writer.writerow(r.encode('utf-8'))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32870044

复制
相关文章

相似问题

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