首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSV:什么时候unicode不是unicode?

CSV:什么时候unicode不是unicode?
EN

Stack Overflow用户
提问于 2019-07-23 23:37:05
回答 1查看 170关注 0票数 0

为什么writerow()说我要通过str,当我经过unicode

代码语言:javascript
复制
import io
import csv

with io.open('test.csv', 'w', encoding="utf-8") as f:
    writer = csv.writer(f)
    x = [unicode(v, 'utf8') for v in ['id:ID', 'pos:string', 'definition:string', ':LABEL']]
    print x
    print type(x[0])
    writer.writerow(x)
代码语言:javascript
复制
[u'id:ID', u'pos:string', u'definition:string', u':LABEL']
<type 'unicode'>
Traceback (most recent call last):
 File "testcsv.py", line 9, in <module>
     writer.writerow(x)
  TypeError: write() argument 1 must be unicode, not str
EN

回答 1

Stack Overflow用户

发布于 2019-07-24 00:26:59

python 2中的csv模块不处理unicode。关于如何创建您自己的unicode处理程序的python2文档举一个例子

一个更好的选择是安装backports.csv模块,它允许您的python2代码使用新的python3Unicode api,它处理backports.csv

使用pip install backports.csv安装库后,此代码在python 2中工作:

代码语言:javascript
复制
>>> import io
>>> from backports import csv
>>> with io.open('test.csv', 'w', encoding="utf-8") as f:
>>>     writer = csv.writer(f)
>>>     x = [unicode(v, 'utf8') for v in ['id:ID', 'pos:string', 'definition:string', ':LABEL']]
>>>     print x
>>>     print type(x[0])
>>>     writer.writerow(x)
[u'id:ID', u'pos:string', u'definition:string', u':LABEL']
<type 'unicode'>

>>> with io.open('test.csv', encoding="utf-8") as f:
>>>     print f.read()
id:ID,pos:string,definition:string,:LABEL
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57173462

复制
相关文章

相似问题

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