查看Ruby的CSV库的文档,我很确定这是可行且简单的。
我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。
答案 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