Ruby 2d数组到csv?

时间:2017-03-16 10:12:52

标签: arrays ruby csv

有一个数组,如何在csv中正确推导出一个文件?

arr1 = [["A","B"], ["C","D"], ["E","F"], ["G","H"]]

csv中的预期结果:

A,B
C,D
E,F
G,H

我这样做:

out_file = File.open('file.csv', 'w')
arr1.each_index do |inx|
  arr1[inx].each do |val|
    out_file.puts val
  end
end

但是,在一栏中打印所有内容:

A
B
C
D
..

如果通过p val输出到控制台,则每个值都是/ r:

"A\r"
"B\r"
"C\r"
"D\r"

我做错了什么?

编辑: result csv Excel result csv Vim

2 个答案:

答案 0 :(得分:3)

不是写入文件。

require 'csv'
CSV.open('file.csv', 'w') do |csv|
  arr1.each { |ar| csv << ar }
end

答案 1 :(得分:0)

有效,

require 'csv'
CSV.open('file.csv', 'w') do |csv|
  arr1.each { |ar| csv << ar }
end

但有必要在它面前完成:

 arr1.each_index do |inx|
    arr1[inx].each do |val|
    val.chop!    
  end
 end

删除换行符\r

它有效:

File.write('file.csv', [["A","B"], ["C","D"], ["E","F"], ["G","H"]].map { |e| e.join(",") }.join($/))