1

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

これを行うためのより良い方法はありますか?どんな助けでも大歓迎です。

4

1 に答える 1

4

これを試して:

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
于 2012-12-24T05:34:26.210 に答える