2012-12-24 35 views
1

我正在嘗試將CS​​V文件,幾個字段剝離,然後輸出一個以管道分隔的文本文件。Ruby - 從csv文件中刪除列並將其轉換爲以管道分隔的txt文件

這是我的代碼,它幾乎可行。唯一的問題是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 

有沒有更好的方法來做到這一點?任何幫助表示讚賞。

回答

2

試試這個:

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 
+0

col_sep ......我需要知道什麼。謝謝! – Dan

相關問題