2016-05-11 5 views
1

CSVから連結フィールドを分割し、Rubyの新しい行に追加しようとしています。ここに、データと望ましい出力の例を示します。Rubyを配列の別の行に分割し、CSVにエクスポート

サンプルデータ

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行をオンCSV.foreach方法から来るように思われます。配列を分割しようとすると、行ごとにcsvデータを読み込むので、新しい行を作成することができないようです。どんな助けでも大歓迎です。

+0

:以下の配列を与える

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 

。あなたはそれらの両方を持っていますか?そうであれば、入力行ごとに複数の行を書く場合です。 – tadman

答えて

1

どうしますか?あなたはCSVリーダライタが必要

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

'split("; ")'や 'split(/; \ s * /)'がおそらくもっと良いでしょう。 –

+0

@Jordanあなたは正しいです!私はあなたの第二の選択肢がより巧妙であると思うので(複数のスペースにマッチするように)、私はそれを取るつもりです。 – Pholochtairze

+0

@ジョーダン、それは完璧です。どうもありがとうございます! –

関連する問題