为什么writerow()说我要通过str,当我经过unicode时
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)[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发布于 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中工作:
>>> 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,:LABELhttps://stackoverflow.com/questions/57173462
复制相似问题