2012-02-07 23 views
4

RubyのCSVライブラリのドキュメントを見ると、これが可能で簡単だと私は確信しています。Rubyを使用してCSVから列を削除することはできますか?

Rubyを使用してCSVファイルの最初の3つの列を削除するだけで済みますが、実行に成功していません。

+2

あなたが書かれていますか?なぜそれは動作しませんでしたか? –

答えて

1

何について:

require 'csv' 

File.open("resfile.csv","w+") do |f| 
    CSV.foreach("file.csv") do |row| 
    f.puts(row[3..-1].join(",")) 
    end 
end 
+0

このコードは、ファイルからすべてのデータを削除するように見えます。 – Justin

+0

このコードは "file.csv"からデータを読み取り、最初の3つの列を付けずに "resfile.csv"に挿入します。 "resfile.csv"は実際に実行ごとにリセットされます。データを追加したい場合は、 "a +"でそれを開きます。オリジナルファイル "file.csv"はまったく変更されません。 – Edu

1
csv_table = CSV.read("../path/to/file.csv", :headers => true) 

keep = ["x", "y", "z"] 

new_csv_table = csv_table.by_col!.delete_if do |column_name,column_values| 
    !keep.include? column_name 
end 

new_csv_table.to_csv 
関連する問題