如何在CSV文件中选择特定行?

时间:2014-10-25 09:17:02

标签: ruby ruby-1.9.3

例如,也许我想从第5行开始:

csv_text = File.read(file)
csv = CSV.parse(csv_text, :headers => true)
csv[20..-1].each do |row|

end

是否可以从第5行写到csv[5..-1]之类的内容?

1 个答案:

答案 0 :(得分:4)

您可以使用CSV.foreach方法迭代CSV和with_index方法来计算您阅读的行数,并跳过您不想处理的行。例如:

require 'csv'

CSV.foreach(file, headers: true).with_index(1) do |row, rowno|   
  next if rowno < 5 # skips first four rows
  # process the row
end

在Ruby 1.9.3中,如果foreach如果没有给出阻止,则Enumerator会返回CSV.to_enum(:foreach, file, headers: true).with_index(1) do |row, rowno| # ... end ,这将无法工作。代码可以像这样修改:

{{1}}