2013-05-29 39 views
7

我正在使用Ruby 1.9.3,並且發現了CSV類,但是我無法使其工作。基本上,我希望能夠操縱CSV的各種選項,然後將.csv文件拖入數組中以便使用,最終將該數組推回到新文件中。使用CSV類來解析Ruby中的.csv文件

這是我目前:

require 'csv' 
CSV_Definition = CSV.New(:header_converters => :symbol) 

CSV_Total = CSV.Read(File.Path("C:\Scripts\SQL_Log_0.csv")) 

不過,我不認爲這是改變:header_converters的正確途徑。目前我無法讓IRB解析這些代碼片段(我不確定如何在IRB中使用require 'csv'),所以我沒有任何特定的錯誤消息。我對此的期望是創建一個數組(CSV_Total),該數組中有一個沒有符號的頭文件。下一步是將該數組放回到一個新文件中。基本上它會擦洗CSV文件。

+2

請告訴我們它是什麼,是不工作,給我們一個你的代碼,輸入,錯誤或意外輸出的例子,以及你期望的輸出。 – Theo

回答

12

紅寶石曾經有它自己內置的CSV庫,從1.970版本開始被FasterCSV取代,點擊鏈接獲取文檔。

您所要做的只是通過require 'csv'聲明來導入CSV類,無論您想要如何使用它並進行相應處理。這是很容易建立與foreach語句的陣列,例如,:

people.csv

Merry,Christmas 
Hal,Apenyo 
Terri,Aki 
Willy,Byte 

process_people.rb

require 'csv'  

people = [] 

CSV.foreach(File.path("people.csv")) do |row| 
    # Where row[i] corresponds to a zero-based value/column in the csv 
    people << [row[0] + " " + row[1]] 
end 

puts people.to_s 
=> [["Merry Christmas"], ["Hal Apenyo"], ["Terri Aki"], ["Willy Byte"]] 
+13

「Ruby曾經有自己內置的CSV庫,它已被替換爲版本1.9的FasterCSV」。換句話說,[Ruby的內置CSV](http://www.ruby-doc.org/stdlib- 2.0/libdoc/csv/rdoc/CSV.html)使用FasterCSV,它曾經是一個單獨的gem,但被拉入Ruby 1.9的標準庫。 –