2012-05-13 22 views
12

Python kullanarak bir csv dosyasına yazmam gerekiyor ve her yineleyici öğesi yeni bir satırda başlamalıdır. Yani ayırıcı kullanıyorum "\ n". Her bir liste yazıldıktan sonra, sonraki liste bir sonraki hücreden yazılmalıdır. csv kullanmaPython, bir liste aktarma ve bir CSV dosyasına yazma

1 
2 
3 
4 5 6 

: Aşağıdaki gibi sonuçlanır Hangi

file = open("test.csv", "wb") 
fileWriter = csv.writer(file , delimiter='\n',quotechar='|', quoting=csv.QUOTE_MINIMAL) 
spamWriter.writerow([1,2,3]) 
spamWriter = csv.writer(file , delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) 
spamWriter.writerow([4,5,6]) 
file.close() 

:

1 4 
2 5 
3 6 

denedim Ne: aşağıda gibi: gibi

lol = [[1,2,3],[4,5,6]] 

csv olacak modül nasıl yapabilirim t aşağıdaki gibi çıktı: Burada alan csv dosyasında virgül anlamına gelir.

Teşekkürler.

cevap

12

, bunu yapabilirdi:

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]) 

Bu irade çıktı test.csv içine:

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

ilk

>>> zip(*lol) 
[(1, 4), (2, 5), (3, 6)] 

zip() kullanarak giriş devrik ve bundan sonra sadece csw.writer mesela onu geçmek için sonuçlar

with open("test.csv", "wb") as f: 
    fileWriter = csv.writer(f, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL) 
    for row in zip(*lol): 
     fileWriter.writerow(row) 

...: zip kullanmadan

$ cat test.csv 
1,4 
2,5 
3,6 
+0

o yazıyor [ve] karakter –

0

Eğer Python3 kullanıyorsanız, dosyaları t ext format "wt", daha fazla csv, herşeyi bir kerede yazmak için kullanılabilecek writerows vardır. Burada bir örnek:

data=[("test", "value1", "value2"), ("test2", "value3", "value4")] 
with open('my.csv','wt') as out: 
    csv_out=csv.writer(out) 
    csv_out.writerows(data) 

Sadece soru listesini nasıl dönüştürüleceği sormak fark ettik, o ayrı bir adımdır ve burada bunu yapmak görecektir:

lol = [[1,2,3],[4,5,6]] 
data = zip(lol[0],lol[1])