将数组值存储到csv列中

时间:2018-07-21 05:05:32

标签: ruby csv

我有一个哈希,需要通过以下代码将其写入csv。

require 'csv'

my_array = [ {name: 'Toyota', model: 'Corolla', engine: [ 4, 6]},{name: 'Honda', model: 'Civic', engine: [ 6, 8]} ]


CSV.open("my_csv.csv", "w", headers: my_array.first.keys, :write_headers => true) do |csv|
  my_array.each do |hash|
    csv << hash.values
  end
end

如您所见,其中一个键-engine中存储着一组值。在我的csv中,如下所示。

name,model,engine
Toyota,Corolla,"[4, 6]"
Honda,Civic,"[6, 8]"

除了像以上engine这样的"[4, 6]"列之外,我如何在保持csv格式的同时又像4,6那样得到它。当必须将一组值存储在csv列中时,通常的惯例是什么?

1 个答案:

答案 0 :(得分:2)

没有“典型惯例”是将数组(和其他任何对象)存储在CSV列中。 CSV应该存储文本值。

如果要在单列中包含它们,只需加入数组:

csv << hash.values.map { |e| [*e].join(',') }