Подтвердить что ты не робот

Игнорировать строку заголовка при анализе CSV файла

Как строка заголовка CSV файла игнорируется в рубине на рельсах при выполнении разбора CSV!! Любые идеи

4b9b3361

Ответ 1

Я нашел решение вышеупомянутого вопроса. Вот как я сделал это в ruby ​​1.9.X.

csv_contents = CSV.parse(File.read(file))
csv_contents.slice!(0)
csv=""
csv_contents.each do |content|
    csv<<CSV.generate_line(content)
end

Ответ 2

Если вы используете ruby ​​1.8.X и FasterCSV, у него есть опция headers:

csv = FasterCSV.parse(your_csv_file, {:headers => true}) #or false if you do want to read them

Если вы используете ruby ​​1.9.X, библиотека по умолчанию - это в основном FasterCSV, поэтому вы можете просто сделать следующее:

csv = CSV.parse(your_csv_file, {headers: true})

Ответ 3

csv = CSV.read("file")

csv.shift # <-- kick out the first line

csv # <-- the results that you want

Ответ 4

Классный способ игнорировать заголовки состоит в том, чтобы прочитать его как массив и игнорировать первую строку:

data = CSV.read("dataset.csv")[1 .. -1]
# => [["first_row", "with data"],
      ["second_row", "and more data"],
      ...
      ["last_row", "finally"]]

Проблема с подходом :headers => false заключается в том, что CSV не будет пытаться прочитать первую строку в качестве заголовка, но будет считать ее частью данных. Итак, в основном, у вас есть бесполезная первая строка.

Ответ 5

Более простой способ, который я нашел, заключается в следующем:

file = CSV.open('./tmp/sample_file.csv', { :headers => true })
# <#CSV io_type:File io_path:"./tmp/sample_file.csv" encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"" headers:true>

file.each do |row|
 puts row
end

Ответ 6

Вот простейшая работа для меня. Вы можете прочитать CSV файл и проигнорировать его первую строку, которая является заголовком или именами полей, используя headers: true:

CSV.foreach(File.join(File.dirname(__FILE__), filepath), headers: true) do |row|
    puts row.inspect
end

Вы можете делать все, что захотите, с помощью row. Не забывайте headers: true