2012-02-07 42 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 
相關問題