从csv文件中删除列,并转换为管道分隔的txt文件



我试图采取CSV文件,剥离几列,然后输出管道分隔的文本文件。

这是我的代码,它几乎工作。唯一的问题是CSV.generate块在整个东西周围添加了双引号,以及一个随机的逗号,在换行符周围添加了双引号。

require 'csv'
original = CSV.read('original.csv', { headers: true, return_headers: true })
original.delete('Column header 1')
original.delete('Column header 2')
original.delete('Column header 3')
csv_string = CSV.generate do |csv|
  csv << original
end
pipe_string = csv_string.tr(",","|")
File.open('output.txt', 'w+') do |f|
  f.write(pipe_string)
end

有更好的方法吗?

试试这个:

require 'csv'
original = CSV.read('original.csv', { headers: true, return_headers: true })
original.delete('Column header 1')
original.delete('Column header 2')
original.delete('Column header 3')
CSV.open('output.txt', 'w', col_sep: '|') do |csv|
  original.each do |row|
    csv << row
  end
end

最新更新