2013-05-29 30 views
7

Sto utilizzando Ruby 1.9.3 e ho scoperto la classe CSV, ma non riesco a farla funzionare. Fondamentalmente, voglio essere in grado di manipolare le varie opzioni per il CSV, e quindi tirare un file .csv in un array con cui lavorare, eventualmente rimandandolo in un nuovo file.Utilizzo della classe CSV per analizzare un file .csv in Ruby

Questo è quello che ho attualmente:

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

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

Tuttavia, non credo che questo sia il modo giusto per cambiare il :header_converters. Al momento non riesco a far funzionare IRB per analizzare questi pezzi di codice (non sono sicuro di come eseguire require 'csv' in IRB), quindi non ho alcun messaggio di errore particolare. Le mie aspettative per questo sarà creare un array (CSV_Total) che abbia un'intestazione senza simboli. Il prossimo passo è rimettere l'array in un nuovo file. Fondamentalmente scrub i file CSV.

+2

Si prega di dirci che cosa è che è non funziona, forniscici un esempio del tuo codice, l'input, l'errore o l'output non previsto e quello che ti aspetti come output. – Theo

risposta

12

Ruby utilizzava la propria libreria CSV che è stata sostituita con FasterCSV dalla versione 1.9, fare clic sul collegamento per la documentazione.

Tutto ciò che è richiesto da parte dell'utente è quello di utilizzare per importare la classe CSV tramite la dichiarazione require 'csv' ovunque si desideri utilizzarla ed elaborarla di conseguenza. E 'abbastanza facile da costruire un array con l'istruzione foreach, ad esempio ,:

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 aveva una propria libreria CSV che è stata sostituita con FasterCSV dalla versione 1.9" Per dirlo in modo diverso, [CSV incorporato di Ruby] (http://www.ruby-doc.org/stdlib- 2.0/libdoc/csv/rdoc/CSV.html) utilizza FasterCSV, che era un gioiello separato, ma è stato inserito nella libreria standard in Ruby 1.9. –

Problemi correlati