【发布时间】:2013-08-29 05:51:36
【问题描述】:
csvfile_ = open(finishedFileName+num+".csv","w",newline='')
writ = csv.writer(csvfile_, dialect='excel')
firstline = unicode(str(firstline))
try:
writ.writerow(firstline)
except TypeError:
print firstline
print type(firstline)
raise
我收到了带有此代码的TypeError: must be unicode, not str。打印第一行的类型时,我看到<type 'unicode'>。当我打印第一行时,我看到了['project_number', 'project_location'](列表比那长,但它继续保持这种风格。)
这个程序在 python 3.3 中运行良好。我用 3to2 将它移植过来,从 unix 切换到 windows。
如何让这个程序写得流畅?
注意:根据官方文档,这个版本的 csv 模块不支持 Unicode 输入,但它告诉我无论如何都要给它 Unicode 输入。
完全例外
Traceback (most recent call last):
File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 382, in <module>
process(marketingLogExportFileName)
File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 123, in process
writing(csvfile,modified,firstline)
File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 114, in writing
writ.writerow(firstline)
TypeError: must be unicode, not str
如果我取出代码来制作第一行 unicode,我会得到 p>
Traceback (most recent call last):
File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 382, in <module>
process(marketingLogExportFileName)
File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 123, in process
writing(csvfile_,modified,firstline)
File "C:\Users\urightswt\Downloads\LogModToConvert.py", line 114, in writing
writ.writerow(firstline)
TypeError: must be unicode, not str
【问题讨论】:
-
您只查看异常;删除
TypeError并查看完整的回溯。 -
Python 2.7 中的
csv模块被记录为不支持 unicode。 -
什么是
csvfile_?它是使用io或codecs模块打开的自动编码Unicode 的打开文件对象吗?如果是这样,那么需要 Unicode 的是 那个 文件对象,而不是 CSV 模块。请向我们展示打开文件对象的代码。 -
和
open是从哪里导入的? 内置open()函数在 Python 2 上不接受newline参数。 -
试试 unicodecsv。它用 unicode 包装 CSV。
标签: python csv python-2.7 unicode error-handling