【问题标题】:fastercsv - save object table in one go (ruby)fastcsv - 一次性保存对象表(ruby)
【发布时间】:2010-02-11 23:47:39
【问题描述】:

我使用下面的行读取了我的 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}

【问题讨论】:

    标签: ruby fastercsv


    【解决方案1】:

    既然你有一个数组数组,看起来你可以这样做:

    FCSV::Table.new(data).to_csv
    

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

    【讨论】:

    • @dunedain289: back to the file 是我要问的问题
    【解决方案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 =...
    

    【讨论】:

    • @Adam:感谢逗号。FCSV.table 只接受两个参数而不是三个参数,所以无论如何我都不会工作。请注意,我想保存 csv 文件并同时使用 csv 选项。
    • 没有问题,你能在 FCSV.table("sorted.csv" .... 不仅仅是错误吗?
    猜你喜欢
    • 2017-11-21
    • 2011-08-30
    • 2021-01-10
    • 2012-06-27
    • 2010-12-28
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多