2012-02-07 68 views
4

查看Ruby的CSV库的文档,我很确定这是可能的和容易的。我可以使用Ruby从CSV中删除列吗?

我只需要删除使用Ruby的CSV文件的前三列,但我没有得到它的任何成功运行。

+2

你有什么写的吗?为什么它不工作? – 2012-02-07 23:31:40

回答

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 2012-02-07 22:46:36

+0

该代码读取“file.csv”中的数据,并将其没有前3列插入到“resfile.csv”中。每次运行都会重置“resfile.csv”。如果你想要附加数据,只需用“a +”打开即可。原始文件“file.csv”根本没有改变。 – Edu 2012-02-08 09:24:19

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