私は、この2次元配列があります。2D配列を直接CSVファイルにダンプするにはどうすればいいですか?
arr = [[1,2],[3,4]]
を私は通常の操作を行います。
CSV.open(file) do |csv|
arr.each do |row|
csv << row
end
end
は、行ごとの追加以外にそれを行うのいずれかより簡単または直接的な方法はありますか?
私は、この2次元配列があります。2D配列を直接CSVファイルにダンプするにはどうすればいいですか?
arr = [[1,2],[3,4]]
を私は通常の操作を行います。
CSV.open(file) do |csv|
arr.each do |row|
csv << row
end
end
は、行ごとの追加以外にそれを行うのいずれかより簡単または直接的な方法はありますか?
あなたの配列は、その後、数字だけ(潜在的にそれらの中にカンマを持っていない文字列)であると仮定すると:
File.open(file,'w'){ |f| f << arr.map{ |row| row.join(',') }.join('\n') }
一つの巨大な文字列が無いCSVライブラリを含むと、ディスクにblatted。
また、CSVライブラリを使用してcorrectly escape each rowへ:
class CSV
def self.dump_array(array,path,mode="rb",opts={})
open(path,mode,opts){ |csv| array.each{ |row| csv << row } }
end
end
CSV.dump_array(arr,file)
あらかじめ定義された方法はありませんか?私は猿のパッチを作成します。 – texasbruce
@ texasbruceドキュメントのあなたの読書は私のものと同じくらい良いです。私は1つを見ません。あなたは? – Phrogz
私は自分自身を作った... – texasbruce
は、上記の答えを拡張する:あなたは、多くの場合、これをしなければならないと、コードがあなたを気にした場合、あなたはそれをモンキーパッチでき
require 'csv'
# #to_csv automatically appends '\n', so we don't need it in #join
File.open(file,'w'){ |f| f << arr.map(&:to_csv).join }
@Phrogzによって、csvライブラリを使用し、デフォルトの区切り文字を変更する必要があります。
File.open(file,'w'){ |f| f << arr.map{|x| x.to_csv(col_sep: '|')}.join }
も参照してください:http://stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby – Phrogz
あなたが持っているものは、すでにかなりあなたがプログラマにとって簡単です。一度に1つずつ行を追加するパフォーマンスが心配ですか? – Phrogz
@Phrogzいいえ私はパフォーマンスについて心配していません。私は人生をもっと楽にしたいと思っていますが、私が使うことができるものがあるかどうか、あるいは自分でそれをしなければならないかどうかは分かりません。 – texasbruce