fastercsv - 一次保存对象表(ruby)

时间:2010-02-11 23:47:40

标签: ruby fastercsv

我使用下面的行

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

问题

我可以用相同的方式保存对象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 =...

注意:

请注意,我希望在保存文件{:quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true, :return_headers => false, :header_converters => :downcase, :converters => :all}

时使用所有CSV选项

2 个答案:

答案 0 :(得分:2)

由于你在数据中有一个数组数组,看起来你可以这么做:

FCSV::Table.new(data).to_csv

将数据的所有csv作为字符串获取,然后将其输出回文件。

答案 1 :(得分:2)

关注dunedain所说的内容,以下内容将把文件写出来

@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 =...