2011-11-20 135 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));