2012-02-29 12 views
8

He estado usando python 2.6. Mientras escribía un programa python para procesar el resultado de la consulta (en formato csv) desde el servidor sql. Descubrí que no es compatible con Unicode.¿Admite python 3.1.3 unicode en el módulo csv?

Cuando ejecuto el programa con el archivo csv, un error de poped diciendo:

for row in csvReader: 
Error: line contains NULL byte 

Después de ahorro el archivo CSV en formato/ANSI ASCII con Ultraedit, el programa está funcionando bien.

Me trataron de incluir la opción de codificación, pero fracasó:

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 

me pregunto si pitón 3 de soporte Unicode esta lectura. Me puede ahorrar mucho trabajo.

+0

¿Por qué no tener acceso al SQL directamente desde Python? – Kimvais

+0

Python 3.1.3's 'open' * definitivamente * admite y' encoding = 'argumento, entonces o estás usando una versión diferente de Python, o has sobrescrito accidentalmente la función' open'. –

+0

Dije que estoy usando Python 2.6. ¿Entonces Python 3.1.3 no tendrá este problema? – lamwaiman1988

Respuesta

6

Python 3 definitivamente es compatible con Unicode. Supongo que especificó la codificación incorrecta (¿o no?) Cuando abrió el archivo CSV para leer. Ver: http://docs.python.org/release/3.1.3/library/functions.html#open

Y trata de algo así como:

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

Editar: Si está utilizando Python 2.6, se puede lograr el mismo resultado con:

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

Sin embargo si Obtienen bytes nulos, su archivo puede codificarse usando "utf-16", por lo que intente si el archivo no se puede decodificar utilizando utf-8.

+0

Intenté especificar la codificación, pero devuelve un error. Por favor revisa mi edición. – lamwaiman1988

Cuestiones relacionadas