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

lam*_*988 8 python csv

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

当我用csv文件运行程序时,出现错误说:

    for row in csvReader:
Error: line contains NULL byte
Run Code Online (Sandbox Code Playgroud)

用Ultraedit以ANSI/ASCII格式保存csv文件后,程序运行正常.

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

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
Run Code Online (Sandbox Code Playgroud)

我想知道python 3是否支持这个unicode阅读.它可以为我节省很多工作.

Dav*_*ver 7

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

尝试类似的东西:

reader = csv.reader(open("foo.csv", encoding="utf-8"))
Run Code Online (Sandbox Code Playgroud)

编辑:如果您使用的是Python 2.6,则可以获得相同的结果:

import codecs
reader = csv.reader(codecs.open("foo.csv", encoding="utf-8"))
Run Code Online (Sandbox Code Playgroud)

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