从CSV读取:分隔符必须是字符串,而不是unicode


问题内容

我有一个工作程序(后一些有用的乡亲给了我一些建议至关重要这个线程)从一个CSV文件创建模型实例。到目前为止,我一直在使用Python
2.7,并确保任何地方都没有出现特殊字符。目前,我需要使用Unicode。我加了

# -*- coding: utf-8 -*-

在文件顶部,一切工作正常(除了CSV阅读器例程外,我可以在代码和注释中使用特殊字符)。即,shell对此部分对象:

dataReader = csv.reader(open(filename), delimiter=';', quotechar='"')

以前在工作

TypeError: "delimiter" must be string, not unicode

阅读一些较旧的问题后,我切换到

dataReader = csv.reader(open(filename), delimiter=str(u';'), quotechar=str(u'"'))

强制定界符将是一个字符串的事实,但是我遇到了完全相同的错误。我究竟做错了什么?


问题答案:

您的默认编码可能不是最合适的。

指定这样的编码:

dataReader = csv.reader(open(filename), delimiter=str(u';').encode('utf-8'), quotechar=str(u'"').encode('utf-8'))