将CSV转换为数组?

时间:2012-03-18 18:41:48

标签: ruby-on-rails ruby arrays vim csv

有关如何使用vim将此CSV转换为ruby数组的任何想法?

启动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,但我也对其他选项持开放态度。

2 个答案:

答案 0 :(得分: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 gem

答案 1 :(得分:4)

在vim中,您可以使用全局搜索并替换为正则表达式:

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

然后相应地编辑结果文件的第一行和最后一行。