2013-03-22 15 views
12

Ho una lista di tuple ordinate per valore. Sono nella forma (name,count) dove il conteggio è il numero di occorrenze per ciascun nome univoco.Salvare l'elenco delle tuple ordinate come CSV

Vorrei prendere questo elenco e trasformarlo in CSV dove ogni nome è intestazione colonna e ogni valore è il valore di colonna di una singola riga.

Qualche suggerimento come si fa? Grazie.

+0

Si prega di modificare il tuo post per includere il tentativo di una soluzione. La gente ti indicherà la giusta direzione. Suggerimento: dai un'occhiata al modulo 'csv' nella libreria standard. – bernie

+1

Basta scrivere una stringa 'output + = myTuple [0] + ',' + myTuple [1] + '\ n'' in un ciclo for. Quando il ciclo è terminato, scrivi 'output' in un file' * .csv'. –

+0

basta "importare csv" e leggere i documenti del modulo, molto semplice. http://docs.python.org/2/library/csv.html –

risposta

36

Si può fare questo:

import csv 

data=[('smith, bob',2),('carol',3),('ted',4),('alice',5)] 

with open('ur file.csv','wb') as out: 
    csv_out=csv.writer(out) 
    csv_out.writerow(['name','num']) 
    for row in data: 
     csv_out.writerow(row) 

Il risultato il file avrà:

name,num 
"smith, bob",2 
carol,3 
ted,4 
alice,5 
+0

Abbastanza irregolarmente, writow() mette le virgolette attorno a SOLO solo delle stringhe. I miei dati grezzi non hanno affatto le virgolette. Qualcosa su quello? –

+0

Se sei su Windows, apri il file con la modalità 'wb' per evitare di ottenere una riga vuota tra ogni riga nell'output. – rleelr

+0

In Python 3, utilizzare la modalità "w" invece di "wb", per evitare di ottenere un'eccezione TypeError. Puoi passare 'newline = ''', che si occuperà delle linee vuote ridondanti. – Tomty

0

semplice ricerca su Google (non usare il naso di Google):

Python, transposing a list and writing to a CSV file:

import csv 
lol = [(1,2,3),(4,5,6),(7,8,9)] 
item_length = len(lol[0]) 

with open('test.csv', 'wb') as test_file: 
    file_writer = csv.writer(test_file) 
    for i in range(item_length): 
    file_writer.writerow([x[i] for x in lol]) 

uscita

1,4,7 
2,5,8 
3,6,9 
Problemi correlati