2011-08-02 18 views
27

Aşağıdaki komut dosyasını kullanarak Python'daki dizelerin bir listesini içeren bir csv dosyası oluşturmaya çalışıyorum. Ancak çıktı dosyamı kontrol ettiğimde, her karakterin virgülle sınırlandığını görüyoruz. CSV.writer 'e her karakter yerine her bir dizeyi sınırlamak için nasıl talimat verebilirim? Bu durumda, Snow Leopard'da Python 2.6 kullanıyorum. Python'da Excel CSV Dosyası Dizelerinin Yazma Dizini

Python rehber kontrol ve spesifik bir şey bulamadı:
http://www.python.org/dev/peps/pep-0305/#managing-different-dialects

import csv 

# Define Data 
RESULTS = ['apple','cherry','orange','pineapple','strawberry'] 

# Open File 
resultFyle = open("output.csv",'wb') 

# Create Writer Object 
wr = csv.writer(resultFyle, dialect='excel') 

# Write Data to File 
for item in RESULTS: 
    wr.writerow(item) 
+2

varsayılan lehçesi, bunu belirtmek gerekmez. – agf

cevap

51

csv.writerwriterow yöntemi, bağımsız değişken olarak yinelenir. Sonuç kümeniz bir liste (satır) listesi (sütun) olmalıdır.

csvwriter.writerow(row) 

akım lehçesi göre biçimlendirilmiş yazarın dosya nesnesine satır parametre, yaz.

birini yapın:

import csv 
RESULTS = [ 
    ['apple','cherry','orange','pineapple','strawberry'] 
] 
with open("output.csv",'wb') as resultFile: 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerows(RESULTS) 

ya:

import csv 
RESULT = ['apple','cherry','orange','pineapple','strawberry'] 
with open("output.csv",'wb') as resultFile: 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerow(RESULT) 
+1

Dokümantasyona bağlantı: [csv module, Writer Objects] (http://docs.python.org/library/csv.html?highlight=csv#writer-objects) – crashmstr

+0

@Andrew: İkincisi de çalışıyor Tek bir satır yazmanız gerekiyorsa, muhtemelen daha uygundur (cevabınızı çözdüyseniz kabul edilebilir olarak işaretlemek isteyebilirsiniz). – GaretJax

+0

@crashmstr: Teşekkürler, bağlantıyı da satır içi eklediniz. – GaretJax

14

düzeltmek için çok basit, sadece bir liste halinde writerow parametreyi açmanız gerekmektedir.

for item in RESULTS: 
    wr.writerow([item,]) 
3

ben biraz geç biliyorum ama bir şey eserler (ve csv kullanarak gerektirmez) Listenizde her eleman için dosyaya yazar döngü için yazmaya olduğunu gördük.

# Define Data 
RESULTS = ['apple','cherry','orange','pineapple','strawberry'] 

# Open File 
resultFyle = open("output.csv",'w') 

# Write data to file 
for r in RESULTS: 
    resultFyle.write(r + "\n") 
resultFyle.close() 

bu çözüm zaten sunulan olanlardan daha iyi olup olmadığını bilmiyorum, ama ben paylaşmak istedim bu yüzden daha yakından orijinal mantığı yansıtmaktadır.

0

Örnek - boolean sütunuyla birden çok satır yazın (örnek yukarıda GaretJax ve Eran? Tarafından kullanılır).

import csv 
RESULT = [['IsBerry','FruitName'], 
      [False,'apple'], 
      [True, 'cherry'], 
      [False,'orange'], 
      [False,'pineapple'], 
      [True, 'strawberry']] 
with open("../datasets/dashdb.csv", 'wb') as resultFile: 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerows(RESULT) 

Sonuç:

df_data_4 = pd.read_csv('../datasets/dashdb.csv') 
df_data_4.head() 

Çıktı: Ben excel

IsBerry FruitName 
    0 False apple 
    1 True cherry 
    2 False orange 
    3 False pineapple 
    4 True strawberry