2017-08-24 4 views
-1

Je suis en train de créer un fichier CSV en python qui ressemble à ceci:Comment formater un fichier CSV en python

Person A Class 1 
      Class 2 
      Class 3 
Person B Class 1 
      Class 2 
      Class 3 
      Class 4 
Person C Class 1 
Person D Class 1 
      Class 2 

J'ai un dictionnaire où dict [personne A] = [classe 1, classe 2, classe 3], mais il est facile de déranger avec la structure de données. Comment ferais-je cela?

+0

Qu'avez-vous fatigué? Quel est votre problème avec ce que vous avez essayé? –

+0

Vous ne voulez pas ce format, vous voulez des enregistrements de longueur variable '" A, 1,2,3 \ nB, 1,2,3,4 \ nC, 1 \ nD, 1,2 "' ('" \ n "' est un caractère de nouvelle ligne), – gboffi

+0

Jetez un oeil au module [Pandas] (http://pandas.pydata.org/) – Deb

Répondre

1

Ce n'est pas comme ça que vous utiliseriez un fichier CSV. La bonne façon de structurer vos données serait d'avoir un en-tête

Person,Class 

et sous que les lignes sous la forme

A,1 
A,2 
A,3 
B,1 
B,2 
B,3 
B,4 
C,1 
D,1 
D,2 

Vous simplement besoin de parcourir votre dict et dans l'entrée, itérer de chaque personne à travers leurs classes et faire quelque chose de loke csvfile.writerow([person, class]) pour chaque paire.

+0

Je préfère suggérer un format d'enregistrement de longueur variable ('" A, 1,2, 3 "'), mais j'apprécie vos efforts pour améliorer le PO. – gboffi

0

obtenir exactement le format que vous montrez que vous pouvez faire par:

data = dict() 

data['Person A'] = ['Class 1', 'Class 2', 'Class 3'] 
data['Person B'] = ['Class 1', 'Class 2'] 

outstr = '' 
for key, value in data.items(): 
    left = key 
    for line in value: 
     outstr += left + '\t' + line + '\n' 
     left = ' '*len(key) 

print(outstr) 

Mais comme gboffi a commenté, si le format csv n'est pas écrit dans la pierre, vous pourriez avoir plus de chance en utilisant un format de longueur variable .