我正在尝试从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数据。任何帮助将不胜感激。
答案 0 :(得分:1)
怎么样?
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"]
]