write work with read how example create python csv dictionary data-conversion

python - work - ¿Cómo convierto esta lista de diccionarios a un archivo csv?



write csv python (6)

Aquí hay otra solución más general, suponiendo que no tiene una lista de filas (quizás no caben en la memoria) o una copia de los encabezados (tal vez la función write_csv es genérica):

def gen_rows(): yield OrderedDict(name=''bob'', age=25, weight=200) yield OrderedDict(name=''jim'', age=31, weight=180) def write_csv(): it = genrows() first_row = it.next() # __next__ in py3 with open("people.csv", "w") as outfile: wr = csv.DictWriter(outfile, fieldnames=list(first_row)) wr.writeheader() wr.writerow(first_row) wr.writerows(it)

Nota : el constructor OrderedDict utilizado aquí solo conserva el orden en python> 3.4. Si el orden es importante, use el OrderedDict([(''name'', ''bob''),(''age'',25)]) .

Tengo una lista de diccionarios que se ve así:

toCSV = [{''name'':''bob'',''age'':25,''weight'':200},{''name'':''jim'',''age'':31,''weight'':180}]

¿Qué debo hacer para convertir esto a un archivo csv que se parece a esto?

name,age,weight bob,25,200 jim,31,180


En el módulo csv de Python, hay un DictWriter que probablemente sea útil.


Porque @User y @BiXiC pidieron ayuda con UTF-8 aquí una variación de la solución de @Matthew. (No puedo comentar, así que estoy respondiendo).

import unicodecsv as csv toCSV = [{''name'':''bob'',''age'':25,''weight'':200}, {''name'':''jim'',''age'':31,''weight'':180}] keys = toCSV[0].keys() with open(''people.csv'', ''wb'') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(toCSV)


esto es cuando tienes una lista de diccionarios:

import csv with open(''names.csv'', ''w'') as csvfile: fieldnames = [''first_name'', ''last_name''] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() writer.writerow({''first_name'': ''Baked'', ''last_name'': ''Beans''})


import csv toCSV = [{''name'':''bob'',''age'':25,''weight'':200}, {''name'':''jim'',''age'':31,''weight'':180}] keys = toCSV[0].keys() with open(''people.csv'', ''wb'') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(toCSV)

EDITAR: Mi solución anterior no maneja el orden. Como notó Wilduck, DictWriter es más apropiado aquí.


import csv with open(''file_name.csv'', ''w'') as csv_file: writer = csv.writer(csv_file) writer.writerow((''colum1'', ''colum2'', ''colum3'')) for key, value in dictionary.items(): writer.writerow([key, value[0], value[1]])

Esta sería la forma más sencilla de escribir datos en un archivo .csv