42 votos

Crear una .archivo csv con los valores de una lista de Python

Estoy tratando de crear una .archivo csv con los valores de una lista de Python. Cuando puedo imprimir los valores de la lista son todos unicode (?), es decir, se ven algo como esto

[u'value 1', u'value 2', ...]

Si me iterar a través de los valores en la lista, es decir, for v in mylist: print v parecen ser texto sin formato.

Y me voy a poner un , entre cada uno de los con print ','.join(mylist)

Y me puede dar salida a un archivo, es decir,

myfile = open(...)
print >>myfile, ','.join(mylist)

Pero yo quiero a la salida a un archivo CSV y se han delimitadores alrededor de los valores en la lista, por ejemplo,

"value 1", "value 2", ... 

No puedo encontrar una manera fácil de incluir los delimitadores en el formato, por ejemplo, he intentado a través de la join declaración. ¿Cómo puedo hacer esto?

67voto

Alex Martelli Puntos 330805
import csv

myfile = open(..., 'wb')
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(mylist)

28voto

Cristian Garcia Puntos 805

Aquí es una versión segura de Alex Martelli:

import csv

with open('filename', 'wb') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    wr.writerow(mylist)

8voto

vy32 Puntos 6298

El uso de python csv módulo para leer y escribir las comas o los archivos delimitados por tabulaciones. El módulo csv es el preferido ya que proporciona un buen control de la comilla.

Por ejemplo, aquí está el ejemplo práctico para usted:

import csv
data = ["value %d" % i for i in range(1,4)]

out = csv.writer(open("myfile.csv","w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerow(data)

Produce:

"value 1","value 2","value 3"

4voto

Robert Christie Puntos 7323

Usted podría utilizar la cadena.método de combinación en este caso.

Dividido en un par de líneas para mayor claridad - esto es una sesión interactiva

>>> a = ['a','b','c']
>>> first = '", "'.join(a)
>>> second = '"%s"' % first
>>> print second
"a", "b", "c"

O como una sola línea

>>> print ('"%s"') % '", "'.join(a)
"a", "b", "c"

Sin embargo, usted puede tener un problema es que las cadenas tienen incrustado comillas. Si este es el caso, tendrá que decidir cómo escapar de ellos.

El módulo CSV puede tomar el cuidado de todo esto para usted, lo que le permite elegir entre varios citando opciones (todos los campos, los campos sólo con las comillas y los separadores, sólo los campos numéricos, etc) y cómo esacpe control charecters (comillas dobles, o escaparon de las cadenas). Si sus valores son simples, de cadena.únete probablemente estará bien, pero si vas a tener que gestionar un montón de casos de borde, utilice el módulo disponible.

3voto

El uso de la csv módulo.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X