2013-10-22 25 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