2011-11-20 216 views
11

我有一列數字,我想將它放在.csv文件的單個列中。下面的代碼在單行中寫入值。我如何更改代碼以便Python將每個值寫入單獨的行?謝謝。將Python列表寫入單個CSV列

 with open('returns.csv', 'wb') as f: 
      writer = csv.writer(f) 
      writer.writerow(daily_returns) 
+1

ISTM僅包含列的CSV文件不需要csv.writer。只需使用''f.writelines([ret +'\ n'for ret in daily_returns])'' –

+2

@RaymondHettinger:或許這是牽強附會,但是'ret'值可能包含'\ n''字符或分隔符需要引用。 – unutbu

回答

16
with open('returns.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for val in daily_returns: 
     writer.writerow([val]) 
+3

我認爲公開電話只應該是'open('returns.csv','w'),因爲f:' – Casey

+0

謝謝。我嘗試了相同的代碼,但是我的最後一行讀取了writer.writerow(val),並且出現了「序列預期」錯誤。我不知道我需要括號。 – johnjdc

+0

@Casey:我會傾向於同意,但是自從OP寫信以來,我認爲他知道他在做什麼。 – unutbu

0

只是爲了記錄:

我使用Python 3.2和我只能得到以下工作

with open('returns','w')as f: 
    writer=csv.writer(f,lineterminator='\n') 
    for val in returns: 
     writer.writerow([val]) 
+1

In Python 3,您應該使用'newline ='''參數打開文件,如[文檔](http://docs.python.org/3.2/library/csv.html#csv.writer)中所述。 – DSM

2

替代的解決方案:假設daily_returns是列表名稱您希望作爲CSV文件中的列寫入,以下代碼應該可以工作:

with open('return.csv','w') as f: 
    writer = csv.writer(f); 
    writer.writerows(zip(daily_returns));