1

我使用下面的行阅读了我的 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 =...

笔记:

请注意,我想在保存文件时使用所有 CSV 选项{:quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true, :return_headers => false, :header_converters => :downcase, :converters => :all}

4

2 回答 2

2

由于您在数据中有一组数组,因此看起来您可以这样做:

FCSV::Table.new(data).to_csv

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

于 2010-02-11T23:57:33.180 回答
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 =...
于 2010-02-12T01:07:16.027 回答