Saltar al contenido

¿Cómo puedo usar io.StringIO() con el módulo csv?

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.BytesIOen 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *