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

时间:2012-02-29 06:45:10

标签: python csv

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

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

    for row in csvReader:
Error: line contains NULL byte

用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

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

2 个答案:

答案 0 :(得分: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"))

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

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

HOWEVER 如果您获得空字节,则可以使用"utf-16"对文件进行编码,因此如果无法使用utf-8解码文件,请尝试使用。

答案 1 :(得分:2)

类似的问题已经回答Python CSV error: line contains NULL byte

此外,尝试以'rb'模式而不是'rU'

打开它