Ruby将连接的数组元素拆分为单独的数组行,并导出到CSV



我正试图从CSV中拆分一个连接字段,并将其添加到Ruby中的新行中。以下是数据和所需输出的示例。

样本数据

Year    Make    Model
1999    Chevy   Camaro; Corvette; Cruz
2001    Ford    Mustang; Shelby; SHO

期望输出

Year    Make    Model
1999    Chevy   Camaro
1999    Chevy   Corvette
1999    Chevy   Cruz
2001    Ford    Mustang
2001    Ford    Shelby
2001    Ford    SHO

我的主要问题似乎来自CSV.foreach方法,该方法将每个CSV行的数据转换为一个单独的数组。如果我试图拆分数组,我似乎无法让它创建新行,因为它逐行读取csv数据。如有任何帮助,我们将不胜感激。

那怎么办?

require 'csv'
desired_array = []
CSV.foreach('myfile.csv', :headers => true) do |csv_obj|
  csv_obj["Model"].split(/;s*/).each do |model|
    new_row = [csv_obj["Year"], csv_obj["Make"], model]
    desired_array.push(new_row)
  end
end
p desired_array

它给出了以下数组:

[
  ["1999", "Chevy", "Camaro"], 
  ["1999", "Chevy", "Corvette"], 
  ["1999", "Chevy", "Cruz"], 
  ["2001", "Ford", "Mustang"], 
  ["2001", "Ford", "Shelby"], 
  ["2001", "Ford", "SHO"]
]

最新更新