Конвертировать CSV в Array? - PullRequest
3 голосов
/ 18 марта 2012

Есть идеи, как преобразовать этот CSV в массив ruby ​​с помощью vim?

Запуск CSV:

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

Желаемый массив:

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

У меня есть> 2000 записей, таких как CSV выше, и я хотел бы быстро переформатировать его для использования в моем приложении Rails. Я хотел бы использовать vim, но я открыт и для других вариантов.

Ответы [ 2 ]

6 голосов
/ 18 марта 2012
FasterCSV.read("path/to/file.csv", :headers => true).map do |row|
  { "Year" => row[0], "Make" => row[1], "Model" => row[2] }
end

PS: установить faster_csv драгоценный камень

4 голосов
/ 18 марта 2012

В vim вы можете использовать глобальный поиск и заменить его регулярным выражением:

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

Затем отредактируйте первую и последнюю строки полученного файла соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...