Ruby 如何在没有CSV类的情况下创建CSV文件?

Ruby 如何在没有CSV类的情况下创建CSV文件?,ruby,Ruby,我使用的是MacOSX版本10.8 我正试图以旧的方式创建一个CSV文件,但是我的代码中有一个bug。它应该创建一个包含三行(即标题)和两行数据的电子表格: 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

我使用的是MacOSX版本10.8

我正试图以旧的方式创建一个CSV文件,但是我的代码中有一个bug。它应该创建一个包含三行(即标题)和两行数据的电子表格:

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
有没有人能解决这个问题,让它发挥作用,并解释我做错了什么


谢谢

尝试将数据放入数组中,然后像这样循环:

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                                                                           
File.open('table.csv','w')do | csv|

怎么了?您得到了什么错误?这是实际代码吗?这些绳子是做什么的?或者这是作为演示的输出?什么是
?您试图打印到文件中的数据来自何处?test.rb:24:语法错误,意外“,”,应为关键字“\u end'Date'、'Open'、'High'、'Low'、'Close'、'Volume'、'Adj Close'”^数据是硬编码的,位于名为test.rb的ruby文件中。感谢您提供了此备用方法问题:没有.join(','))单元格将打印一列。那么.join(“,”)实际上在做什么呢?你能用外行的语言解释一下吗。感谢
join(',')
获取数组的所有元素,并通过在每个元素之间加上“,”来创建字符串。所以
['a','b','c'].join('',')
返回字符串
“a,b,c”
。如果没有连接,则将数组传递给
put
,它将在单独的行上打印数组的每个元素。
join
正在构建一个以逗号分隔的字符串,以传递给它将在一行上打印的
put
。如果其中一个字符串包含“foo,bar”,并且您写出数据,然后尝试读入,会发生什么情况?true。如果数据可以包含逗号,则需要开始转义。在这一点上,我建议只使用。重新发明轮子毫无意义。
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