2013-03-22 11 views
12

Mam listę krotek sortowanych według wartości. Są one w postaci (name,count), gdzie liczba to liczba wystąpień dla każdej unikalnej nazwy.Zapisz listę zamówionych krotek jako CSV

Chciałbym wziąć tę listę i przekształcić ją w CSV, gdzie każda nazwa jest nagłówkiem kolumny , a każda wartość jest wartością kolumny jednego wiersza.

Wszelkie sugestie, jak to zrobić? Dzięki.

+0

Edytuj swój wpis, dołączając do niego próbę rozwiązania. Ludzie wskażą ci właściwy kierunek. Wskazówka: posortuj moduł 'csv' w bibliotece standardowej. – bernie

+1

Wystarczy napisać ciąg 'output + = myTuple [0] + ',' + myTuple [1] + '\ n'' w pętli for. Po zakończeniu pętli wpisz "output" do pliku '* .csv'. –

+0

po prostu "importuj csv" i przeczytaj dokumenty modułu, bardzo proste. http://docs.python.org/2/library/csv.html –

Odpowiedz

36

Można to zrobić:

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) 

wyjście Plik będzie miał:

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

Dość nieregularnie, writerow() umieszcza cudzysłowy wokół NIEKTÓRYCH ciągów znaków. Moje nieprzetworzone dane nie mają wcale cudzysłowów. Coś na ten temat? –

+0

Jeśli jesteś w systemie Windows, otwórz plik w trybie "wb", aby uniknąć uzyskania pustego wiersza między każdym wierszem w danych wyjściowych. – rleelr

+0

W Pythonie 3 użyj trybu "w" zamiast "wb", aby uniknąć błędu TypeError. Możesz przekazać 'newline = ''', które zajmie się nadmiarowymi pustymi liniami. – Tomty

0

prosty wyszukiwania Google (nie korzystać z nosa 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]) 

wyjście

1,4,7 
2,5,8 
3,6,9 
Powiązane problemy