Ruby 如何将2D数组直接转储到CSV文件中?

Ruby 如何将2D数组直接转储到CSV文件中?,ruby,csv,Ruby,Csv,我有一个2D阵列: arr = [[1,2],[3,4]] 我通常会: CSV.open(file) do |csv| arr.each do |row| csv << row end end CSV.open(file)do | CSV | 每排 csv假设数组只是数字(没有可能包含逗号的字符串),则: File.open(File,'w'){| f | f通过@Phrogz扩展上述答案,同时使用csv库并需要更改默认分隔符: File.open(file,

我有一个2D阵列:

arr = [[1,2],[3,4]]
我通常会:

CSV.open(file) do |csv| 
  arr.each do |row| 
    csv << row
  end
end
CSV.open(file)do | CSV |
每排

csv假设数组只是数字(没有可能包含逗号的字符串),则:


File.open(File,'w'){| f | f通过@Phrogz扩展上述答案,同时使用csv库并需要更改默认分隔符:

File.open(file,'w'){ |f| f << arr.map{|x| x.to_csv(col_sep: '|')}.join }

File.open(File,'w'){| f | f另请参见:对于程序员来说,您所拥有的已经非常容易了。您是(过早地)吗担心一次添加一行的性能吗?@Phrogz不,我不担心性能。我想让生活更轻松,但不确定是否已经有我可以使用的东西,或者我必须自己做。像CSV.read方法一样,它可以读取CSV文件并解析到二维数组,但为什么没有相反的东西呢?在旧版本的Rub中y以前有CSV.dump…现在没有了,所以没有预定义的方法可以做到这一点?我会制作一个猴子补丁,然后…@texasbruce你对文档的理解和我一样好。我没有看到一个;是吗?顶级版本对我不起作用,在文件中嵌入了一堆文字“\n”字符串。
require 'csv'
# #to_csv automatically appends '\n', so we don't need it in #join
File.open(file,'w'){ |f| f << arr.map(&:to_csv).join } 
class CSV
  def self.dump_array(array,path,mode="rb",opts={})
    open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
  end
end
CSV.dump_array(arr,file)
File.open(file,'w'){ |f| f << arr.map{|x| x.to_csv(col_sep: '|')}.join }