参见英文答案 >
Ignore header line when parsing CSV file5个
Ruby的
Ruby的
CSV
课程可以很容易地遍历每一行:
CSV.foreach(file) { |row| puts row }
header1,header2 foo,bar baz,yak
我不想要标题.现在,当我打电话给…
CSV.foreach(file,:headers => true)
我得到这个结果:
#<CSV::Row:0x10112e510 @header_row = false,attr_reader :row = [ [0] [ [0] "header1",[1] "foo" ],[1] [ [0] "header2",[1] "bar" ] ] >
当然,因为文档说:
This setting causes #shift to return rows as CSV::Row objects instead of Arrays
但是,如何跳过标题行,将行作为一个简单的数组返回?我不希望返回复杂的CSV :: Row对象.
我绝对不想这样做:
first = true CSV.foreach(file) do |row| if first puts row first = false else # code for other rows end end
解决方法
看看
#shift从CSV类:
包装的字符串和IO的主要读取方法是从数据源中提取的一行,并将其解析并返回为字段数组(如果不使用标题行)
一个例子:
require 'csv' # CSV FILE # name,surname,location # Mark,Needham,Sydney # David,Smith,London def parse_csv_file_for_names(path_to_csv) names = [] csv_contents = CSV.read(path_to_csv) csv_contents.shift csv_contents.each do |row| names << row[0] end return names end