2014-07-14 4 views
0

Je suis exécutant le code suivant dans la version Ruby 1.8.7inattendues ':' ET erreurs inattendues ')'

require 'csv' 

FILENAME = 'filename' 

cleansed_output = File.open('filename_cleaned.csv','wb') 

CSV.open(FILENAME, encoding: 'ISO8859-1') do |output| 
    row_number = 1 
    loop do 
    begin 
     break unless row = output.shift 
     cleansed_output << row.to_csv 
    rescue CSV::MalformedCSVError => e 
     puts "Malformed row #: #{row_number}" 
    ensure 
     puts "Row number: #{row_number}" if row_number % 10000 == 0 
     row_number += 1 
    end 
    end 
end 

cleansed_output.close 

et que je reçois les erreurs suivantes:

csv_cleanser2.rb:7: syntax error, unexpected ':', expecting ')' 
CSV.open(FILENAME, encoding: 'ISO8859-1') do |output| 
          ^
csv_cleanser2.rb:7: syntax error, unexpected ')', expecting $end 
CSV.open(FILENAME, encoding: 'ISO8859-1') do |output| 

I Essaie de nettoyer un csv avec un délimiteur cassé. Quelqu'un sait quel est le problème ici?

Merci!

Répondre

3

Vous utilisez Ruby 1.8.7, mais vous essayez d'utiliser la syntaxe 1.9 de hachage:

CSV.open(FILENAME, encoding: 'ISO8859-1') do |output| 

essayez d'utiliser les vieilles fusées de hachage scolaire:

CSV.open(FILENAME, :encoding => 'ISO8859-1') do |output| 
+0

Ah, il nous aller. Cela a corrigé la première partie, mais maintenant je reçois une autre erreur étrange: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:89:in 'open ':' mode 'doit être' r ',' rb ',' w 'ou' wb '(ArgumentError) \t de csv_cleanser2.rb: 7 J'utilise' wb ', alors pourquoi cela me donnerait-il une erreur? Un autre problème de version? – jstauss

Questions connexes