意外“:”和意外“)”错误
问题描述:
我的红宝石版本中运行下面的代码1.8.7意外“:”和意外“)”错误
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
和我得到了以下错误:
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|
我试图用分隔符来清理csv。任何人都知道问题在这里?
谢谢!
答
你使用Ruby 1.8.7,但你要使用1.9哈希语法:
CSV.open(FILENAME, encoding: 'ISO8859-1') do |output|
尝试使用旧校舍哈希火箭:
CSV.open(FILENAME, :encoding => 'ISO8859-1') do |output|
啊,我们有走。这固定了第一部分,但现在我得到了另一个奇怪的错误: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/csv.rb:89:in'open ':'mode'必须是'r','rb','w'或'wb'(ArgumentError) \t from csv_cleanser2.rb:7 我正在使用'wb',那么为什么这会给我一个错误?另一个版本问题? – jstauss