【发布时间】:2012-02-07 21:47:58
【问题描述】:
查看 Ruby 的 CSV 库的文档,我很确定这是可能且简单的。
我只需要使用 Ruby 删除 CSV 文件的前三列,但运行它没有任何成功。
【问题讨论】:
-
你写了什么?为什么它不起作用?
查看 Ruby 的 CSV 库的文档,我很确定这是可能且简单的。
我只需要使用 Ruby 删除 CSV 文件的前三列,但运行它没有任何成功。
【问题讨论】:
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
【讨论】:
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
【讨论】:
怎么样:
require 'csv'
File.open("resfile.csv","w+") do |f|
CSV.foreach("file.csv") do |row|
f.puts(row[3..-1].join(","))
end
end
【讨论】:
我在这里建立了一些问题(真的很喜欢@fguillen 对CSV::Table 所做的事情),但只是将其放入现有项目、定位文件并进行快速更改变得更简单了。
已添加 byebug 原因...是的。然后还保留了原始文件中的标题(假设它们存在给任何想要使用这个 sn-p 的人)。
如果您想测试/修补,每次都会覆盖该文件。
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
【讨论】: