Мы только начали использовать Ruby 1.9.2, поэтому теперь мы используем CSV, а не FasterCSV (ну, мы все еще используем FasterCSV, но вы понимаете, о чем я).
Я не могу получить код в примере 2 ниже, чтобы игнорировать строку заголовка с помощью параметров. Когда я добавляю ЛЮБЫЕ параметры в CSV.foreach, он объединяет весь CSV-файл и все его строки в один массив, а не массив в каждой строке. Рабочий пример ниже:
Следующий код прекрасно работает для меня (в обоих случаях я использую один и тот же файл:
CSV.foreach(csv_import.path) do |row_data|
puts row_data.inspect
end
Результат:
["a", "b", "c", "d", "e", "f", "g", "h"]
["1", "1", "1", "1", "1", "1", "1", "1"]
["2", "2", "2", "2", "2", "2", "2", "2"]
ИДЕАЛЬНОЕ! это то, что я хочу, за исключением того, что я хочу игнорировать ["a", "b", "c", "d", "e", "f", "g", "h"]
Так что теперь я пишу код:
CSV.foreach(csv_import.path, :headers => true) do |row_data|
puts row_data.inspect
end
Результат - 1 строка:
["a", "b", "c", "d", "e", "f", "g", "h \ n1", "1", "1", "1", «1», «1», «1», «1 \ n2», «2», «2», «2», «2», «2», «2», «2»]
Я уверен, что я что-то набил в опциях Hash, но я не знаю, что это? Я пробовал строковые значения, строковые ключи, упаковывая параметры с {}, но безрезультатно. Я пробовал также row_sep = "\ n".
Я новичок в RoR, кто-нибудь может пролить свет на то, какую ошибку я здесь делаю?
Спасибо за ответ, Зигги, но мне не повезло. Похоже, CSV.foreach возвращается и Array для меня? Будет ли JRuby влиять:
Это моя версия
jruby 1.6.0 (уровень исправления ruby 1.9.2 136) (2011-03-15 f3b6154) (Java HotSpot (TM) 6
4-разрядная серверная виртуальная машина 1.6.0_24) [Windows 7-amd64-java]
Я попробовал ваш код и получил следующее:
CSV.foreach(csv_import.path) do |row_data|
puts row_data.class
puts row_data.length
end
выход:
Массив
8
массив
8
массив
8
CSV.foreach(csv_import.path, :headers => :first_row, :return_headers => false) do |row_data|
puts row_data.class
puts row_data.length
end
выход:
Массив
22
Я знаю, что это простой обходной путь, позволяющий игнорировать заголовки программно, просто хотел узнать, правильно ли я использовал библиотеку.