Как указать, какие поля писать с помощью FasterCSV - PullRequest
0 голосов
/ 12 декабря 2011

В разное время я обнаруживаю «массив хэшей» в своем скрипте ruby ​​и хочу записать их в файл csv. Я знаю, что могу использовать FasterCSV для этого.

У меня вопрос: а что, если я хочу указать определенные поля? Как я могу сделать это без необходимости выполнять хэш-фильтрацию самостоятельно? В идеале я мог бы указать список полей для FasterCSV, а затем добавить хэши. Затем FasterCSV позаботится о фильтрации значений для ключей, соответствующих указанным полям, и сделает все остальное.

В Python есть библиотека под названием DictWriter, которая может сделать это.

1 Ответ

3 голосов
/ 16 декабря 2011

Хорошо, я задал ваш вопрос Джеймсу (автору FasterCSV), и вот его ответ:

Если у вас есть массив хэшей, скажите

[{a: 1, b: 2, x: 0}, {a: 2, b: 3}]

А вам нужны только клавиши: a и: b, вы можете делать следующее:

>> CSV.generate(headers: [:a, :b]) do |csv|
  |   [{a: 1, b: 2, x: 0}, {a: 3, b: 10}].each do |row|
  |     csv << row
  |   end
  | end
 => "1,2\n3,10\n"

Надеюсь, это поможет.

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