Si hallas alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
El pitón 2.7 csv
El módulo no es compatible con la entrada Unicode: consulte la nota al principio de la documentación.
Parece que tendrá que codificar las cadenas Unicode en cadenas de bytes y usar io.BytesIO
en lugar de io.StringIO
.
La sección de ejemplos de la documentación incluye ejemplos para un UnicodeReader
y UnicodeWriter
clases contenedoras (gracias @AlexeyKachayev por el puntero).
Utilice StringIO.StringIO().
http://docs.python.org/library/io.html#io.StringIO
http://docs.python.org/library/stringio.html
io.StringIO
es una clase Maneja Unicode. Refleja la estructura de biblioteca preferida de Python 3.
StringIO.StringIO
es una clase Maneja cuerdas. Refleja la estructura de biblioteca heredada de Python 2.
Encontré esto cuando traté de entregar un archivo CSV a través de Flask directamente sin crear el archivo CSV en el sistema de archivos. Esto funciona:
import io
import csv
data = [[u'cell one', u'cell two'], [u'cell three', u'cell four']]
output = io.BytesIO()
writer = csv.writer(output, delimiter=',')
writer.writerows(data)
your_csv_string = output.getvalue()
Ver también
- Más sobre CSV
- La parte del matraz
- Algunas notas sobre Strings / Unicode
Si te gusta la idea, puedes dejar un tutorial acerca de qué te ha gustado de este artículo.