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(1 行、1 行 + 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 に答える