2012-03-18 11 views
3

このCSVをvimを使ってルビーの配列に変換する方法に関するアイデアはありますか?CSVをアレイに変換しますか?

開始CSV:

Year,Make,Model 
1997,Ford,E350 
2000,Mercury,Cougar 

希望アレイ:

car_info = [ 
    {'Year' => '1997', 'Make' => 'Ford', 'Model' => 'E350'}, 
    {'Year' => '2000', 'Make' => 'Mercury', 'Model' => 'Cougar'}, 
] 

私は上記のCSVのような> 2000のエントリを持っている、と私はすぐに再フォーマットするために使用するためにそれを方法をみたいです私のRailsアプリ。私はvimを使いたいですが、私は他のオプションも開いています。

+0

ファイルを読み込んで、それをRubyを使用したいオブジェクトに変換してみませんか? –

+1

これは良い考えです。答えに例を投稿できますか? –

答えて

6
FasterCSV.read("path/to/file.csv", :headers => true).map do |row| 
    { "Year" => row[0], "Make" => row[1], "Model" => row[2] } 
end 

PS:インストールfaster_csv宝石

+3

'faster_csv'はすでに1.9にバンドルされています。これは' csv'と呼ばれています。 – Reactormonk

+0

+1。また、CSVを読むときに ':headers => true'を使うこともできます。 –

+0

これは手作業よりも有望です。ありがとう! –

4

vimのでは、グローバル検索を使用して、正規表現で置き換えることができます。

:g/\(.*\),\(.*\),\(.*\)/s//{'Year' => '\1', 'Make' => '\2', 'Model' => '\3'}/g 

は、それに応じたファイルの最初と最後の行を編集します。

+0

ありがとう - これは良い解決策のように見えます。あなたは正規表現と検索を組み合わせることができるか分からなかった。 –

関連する問題