我正在使用FasterCSV,我正在使用这样的foreach循环
FasterCSV.foreach("#{Rails.public_path}/uploads/transfer.csv", :encoding => 'u', :headers => :first_row) do |row|
但问题是我的csv有前3行作为标题...任何方法使quickCSV跳过前三行而不是第一行?
答案 0 :(得分:19)
不确定FasterCSV,但在Ruby 1.9标准CSV库(由FasterCSV制作)中,我可以做类似的事情:
c = CSV.open '/path/to/my.csv'
c.drop(3).each do |row|
# do whatever with row
end
答案 1 :(得分:5)
我不是FasterCSV的用户,但为什么不自己做控制:
additional_rows_to_skip = 2
FasterCSV.foreach("...", :encoding => 'u', :headers => :first_row) do |row|
if additional_rows_to_skip > 0
additional_rows_to_skip -= 1
else
# do stuff...
end
end
答案 2 :(得分:0)
感谢Mladen Jablanovic。我得到了线索......但我意识到有趣的事情 在1.9中,阅读似乎来自POS。 我的意思是,如果你这样做
c = CSV.open iFileName
logger.debug c.first
logger.debug c.first
logger.debug c.first
您的日志中会得到三种不同的结果。一个用于三个标题行中的每一行。
c.each do |row|
#now似乎从第4行开始。
以这种方式读取文件是完全合理的。然后它只需要在内存中有当前行。
我仍然喜欢MladenJablanović的回答,但这也是一个有趣的逻辑。