Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python 3.1.3是否在csv模块中支持unicode?_Python_Csv - Fatal编程技术网

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

python 3.1.3是否在csv模块中支持unicode?,python,csv,Python,Csv,我一直在使用Python2.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, mod

我一直在使用Python2.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

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

Python 3肯定支持unicode。我猜您在打开CSV文件进行读取时指定了错误的(或否?)编码。见:

试着做一些类似的事情:

reader = csv.reader(open("foo.csv", encoding="utf-8"))
编辑:如果您使用的是Python 2.6,您可以通过以下方式获得相同的结果:

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

但是,如果您得到的是空字节,您的文件可能会使用“utf-16”进行编码,因此,如果无法使用utf-8对文件进行解码,请尝试这样做。

类似的问题已经得到了回答


另外,尝试以“rb”模式而不是“rU”模式打开它。

为什么不直接从python访问SQL?python 3.1.3的
open
肯定支持和
encoding=
参数,所以要么您使用的是不同版本的python,要么您意外地覆盖了
open
函数。我说我使用的是python 2.6。那么Python3.1.3就不会有这个问题了?Python3仍然有这个问题。显然,有一个NUL字节把python搞乱了,不管它是Python3还是Python2。哦,对不起,不清楚您使用的是Python2.6。查看我的更新答案。我试图指定编码,但返回错误。请检查我的编辑。