我正试图从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"]
]