2013-10-22 17 views
0

我正在使用Mac OSX版本10.8如何创建不含CSV类的CSV文件?

我想创建一个旧的时尚方式的CSV文件,但在我的代码中有一个错误。它应该创建一个电子表格,三人行,即标题,两行数据在其下方:

File.open('table.csv', 'w') do |f| 
    f.puts.each {|line| puts line} 
    'Date','Open','High','Low','Close','Volume','Adj Close' 
    '10/8/2013','1676.22','1676.79','1655.03','1655.45','3569230000','1655.45' 
    '10/7/2013','1687.15','1687.15','1674.7','1676.12','2678490000','1676.12' 
end 

有人能解决这个问题,这样它的工作原理,并解释什么,我做错了。

感谢

+1

出了什么问题?你得到什么错误? –

+0

这是实际的码?这些弦在那里做了什么?或者说是输出作为示范? – pduersteler

+0

'线'是什么?您试图打印到文件中的数据来自哪里? – carols10cents

回答

0

尝试把你的数据在一个数组,然后遍历这样说:

data = [                  
    ['Date','Open','High','Low','Close','Volume','Adj Close'],     
    ['10/8/2013','1676.22','1676.79','1655.03','1655.45','3569230000','1655.45'] 
    ['10/7/2013','1687.15','1687.15','1674.7','1676.12','2678490000','1676.12'], 
]                    
File.open('table.csv', 'w') do |f|            
    data.each{|line| f.puts line.join(',')}          
end                   
+0

谢谢。这工作完美! – user2449984

+0

问题:如果没有.join(',')单元格会打印一列。那么.join(',')究竟在做什么?你能否请外行解释。谢谢 – user2449984

+0

join(',')'将数组的所有元素都取出来,并通过在每个元素之间附加(“加入”)它们以及','来创建一个字符串。所以'['a','b','c']。join(',')'返回字符串'“a,b,c”'。如果没有连接,你需要将一个数组传递给'puts',这将在单独的一行中打印数组的每个元素。 'join'构建一个逗号分隔的字符串,以传递给'puts'它将打印在一行上。 – bundacia

1
File.open('table.csv', 'w') do |csv| 
csv << ["Date","Open","High","Low","Close","Volume","Adj Close"] 
csv << ["10/8/2013","1676.22","1676.79","1655.03","1655.45","3569230000","1655.45"] 
csv << ["10/7/2013","1687.15","1687.15","1674.7","1676.12","2678490000","1676.12"] 
end 

这应该工作。你不需要一个数组。

+0

感谢您使用这种替代方法 – user2449984