我可以使用Ruby从CSV中删除列吗?

时间:2012-02-07 21:47:58

标签: ruby csv

查看Ruby的CSV库的文档,我很确定这是可行且简单的。

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

3 个答案:

答案 0 :(得分:6)

csv_table = CSV.read(file_path_in, :headers => true)
csv_table.delete("header_name")
csv_table.to_csv # => The new CSV in string format

查看CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

答案 1 :(得分:1)

怎么样:

require 'csv'

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

答案 2 :(得分:0)

我在这里提出了一些问题(真的很喜欢@fguillen对CSV::Table所做的事情),但是使将其放入现有项目,定位文件并进行快速更改变得更加简单

已添加byebug原因...是。然后还保留了原始文件中的标头(假设任何想要使用此代码段的人都存在标头)。

每次要测试/修补时,文件都会被覆盖。

require 'csv'
require 'byebug'

in_file = './db/data/inbox/change__to_file_name.csv'
out_file = in_file + ".out"

target_col = "change_to_column_name"
 
csv_table = CSV.read(in_file, headers: true)
csv_table.delete(target_col)

CSV.open(out_file, 'w+', force_quotes: true) do |csv|
  csv << csv_table.headers
  csv_table.each_with_index do |row|
    csv << row
  end
end