accelecsv - сохранить таблицу объектов за один раз (ruby) - PullRequest
1 голос
/ 12 февраля 2010

Я прочитал свой CSV, используя строку ниже

data = FCSV.table("test.csv", {:quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true, :return_headers => false, :header_converters => :downcase, :converters => :all} )

Вопрос * * 1004 Могу ли я сохранить объект data таким же образом (одна строка, один ход + опции csv)? см. Выше Я сортирую таблицу (см. Код ниже), а затем хочу сохранить ее снова. Я не мог понять, как сохранить таблицу за один раз. Я знаю, как сделать это построчно. array_of_arrays = data.to_a() headers = array_of_arrays.shift # remove the headers array_of_arrays.sort_by {|e| [e[3], e[4].to_s, e[1]]} .each {|line| p line } array_of_arrays.insert(0,headers) Все, что я пробовал, не работало и давало мне что-то очень похожее на csv.rb:33: syntax error, unexpected '{', expecting ')' ... FCSV.table("sorted.csv","w" {:quote_char => '"', :col_sep =... Примечание:

Обратите внимание, что я хочу использовать все параметры CSV при сохранении файла {:quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true, :return_headers => false, :header_converters => :downcase, :converters => :all}

Ответы [ 2 ]

2 голосов
/ 12 февраля 2010

Просто следуя тому, что сказал Данэйдэн, следующий выпишет файл

@csv = FCSV::Table.new(data).to_csv
File.open("modified_csv.csv", 'w') {|f| f.write(@csv) }

также ошибка, которая возникла в приведенном ниже коде, связана с тем, что у вас не было запятой после "w" и до {, но похоже, что вы, возможно, обращались к функциям чтения вместо функций записи

csv.rb:33: syntax error, unexpected '{', expecting ')'
... FCSV.table("sorted.csv","w" {:quote_char => '"', :col_sep =...
2 голосов
/ 12 февраля 2010

Поскольку у вас есть массив массивов данных, похоже, что вы можете просто сделать:

FCSV::Table.new(data).to_csv

чтобы получить все csv для данных в виде строки, а затем вывести их обратно в файл.

...