python 3.1.3是否支持csv模块中的unicode



我一直在使用python 2.6。当我正在编写一个python程序来处理来自sql server的查询结果(csv格式)时。我发现它不支持unicode。

当我用csv文件运行程序时,弹出一个错误,上面写着:

    for row in csvReader:
Error: line contains NULL byte

使用Ultraedit将csv文件保存为ANSI/ASCII格式后,程序运行正常。

我试图包含编码选项,但失败了:

csvReader = csv.reader(open(fname, mode='rb', encoding='unicode'), delimiter=',')
TypeError: 'encoding' is an invalid keyword argument for this function
csvReader = csv.reader(open(fname, mode='rb', encoding='utf-8'), delimiter=',')
TypeError: 'encoding' is an invalid keyword argument for this function

我想知道python 3是否支持这种unicode读取。它可以为我节省很多工作。

Python3肯定支持unicode。我的猜测是,当您打开CSV文件进行读取时,您指定了错误的(或没有?)编码。请参阅:http://docs.python.org/release/3.1.3/library/functions.html#open

尝试一下:

reader = csv.reader(open("foo.csv", encoding="utf-8"))

编辑:如果您使用的是Python2.6,您可以使用获得相同的结果

import codecs
reader = csv.reader(codecs.open("foo.csv", encoding="utf-8"))

但是如果你得到的是空字节,你的文件可能会使用"utf-16"编码,所以如果文件不能使用utf-8解码,请尝试。

类似的问题已经得到回答Python CSV错误:行包含NULL字节

此外,尝试以"rb"模式而不是"rU"打开它

最新更新