【问题标题】:Ruby Write in CSV file by columns from arrays? [closed]Ruby 按数组中的列写入 CSV 文件? [关闭]
【发布时间】:2013-03-13 23:32:44
【问题描述】:

我想从多个数组生成一个 csv 文件。 这是我的代码:

require 'csv'
CSV.open("csvfile.csv", "ab") do |csv|
csv << [array1]
csv << [array2]
csv << [array3]
end

我需要这种输出格式:

array1,array2,array3
array1,array2,array3
array1,array2,array3
array1,array2,array3
array1,array2,array3

谢谢你的帮助

【问题讨论】:

    标签: ruby arrays csv


    【解决方案1】:

    Enumerable#zip是并行遍历多个集合最常用的方法。

    require 'csv'
    
    CSV.open('csvfile.csv', 'ab') do |csv|
      array1.zip(array2,array3) { |row| csv << row }
    end
    

    【讨论】:

      【解决方案2】:

      根据您的帖子,您的意思是array1、array2、array3存储了表的3列的值,而行索引由这些数组中的值的索引标识?您可以先将列组合在一起,在二维数组上执行transpose,然后逐行写入 CSV 文件。

      require 'csv'
      table = [array1, array2, array3].transpose
      CSV.open('csvfile.csv', 'ab') do |csv|
          table.each do |row|
              csv << row
          end
      end
      

      你会得到一个这样的 csv 文件:

      array1[0], array2[0], array3[0]
      array1[1], array2[1], array3[1]
      array1[2], array2[2], array3[2]
      ...
      

      【讨论】:

      • 是的,这就是我想做的。完美的!非常感谢!
      猜你喜欢
      • 2018-03-19
      • 2021-02-12
      • 1970-01-01
      • 2016-12-21
      • 2016-09-05
      • 2011-10-30
      • 1970-01-01
      • 2014-07-13
      • 2019-05-19
      相关资源
      最近更新 更多