Je dispose d'une liste de dictionnaires de ce type :
[
{'site1':'data1'},
{'site2':'data2'}
]
Comment générer un fichier csv avec les données dans cet ordre ?
row 1 row2
site1 data1
site2 data2
Je dispose d'une liste de dictionnaires de ce type :
[
{'site1':'data1'},
{'site2':'data2'}
]
Comment générer un fichier csv avec les données dans cet ordre ?
row 1 row2
site1 data1
site2 data2
Bouclez les dictionnaires et écrivez-les dans le fichier.
list_of_dicts = [{'site1':'data1'},{'site2':'data2'}]
with open('sites.csv', 'w') as file:
file.write('row1\trow2\n')
for dictionary in list_of_dicts:
file.write('\t'.join(list(dictionary.items())[0]) + '\n')
de la production :
row1 row2
site1 data1
site2 data2
Notez que chaque dictionnaire ne doit contenir qu'une seule entrée. S'il en contient plusieurs, l'une d'entre elles est sélectionnée au hasard et les autres sont ignorées. Il existe de nombreuses façons de gérer le fait qu'il y ait plus d'une entrée dans les dictionnaires. Vous devez donc ajouter le comportement attendu à l'énoncé de la question pour que ces cas soient pris en compte.
Vous devez utiliser un programme d'écriture CSV pour vous assurer que tous les métacaractères intégrés, tels que les virgules et les guillemets, sont correctement échappés, faute de quoi des données telles que {'site3':'data, data and more data'}
corrompra le fichier.
import csv
my_list = [{'site1':'data1'}, {'site2':'data2'}]
with open('test.csv', 'w', newline='') as out_fp:
writer = csv.writer(out_fp)
for d in my_list:
writer.writerows(d.items())
Vous pouvez raccourcir un peu cette procédure en utilisant itertools
si vous voulez
import itertools
with open('test.csv', 'w', newline='') as out_fp:
csv.writer(out_fp).writerows(itertools.chain.from_iterable(
d.items() for d in my_list))
J'aime utiliser pandas
pour créer mes données et les écrire dans des fichiers csv.
a = [{'site1':'data1'},{'site2':'data2'}]
#Get each key and values from each dictionaries in the list
keys = []
vals = []
for a1 in a:
for k, v in a1.items():
keys.append(k)
vals.append(v)
#make the dataframe from the keys and values
result = pd.DataFrame({'row1': keys, 'row2':vals})
#write the data into csv, use index=False to not write the row numbers
result.to_csv("mydata.csv", index=False)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.