Ruby - 比较csv文件的一列中的相邻条目

时间:2016-03-07 15:57:28

标签: ruby csv

我是Ruby的新手,如果这很容易就道歉: - )

我有一个包含5列的.csv文件。第一列具有记录标识符(在这种情况下是驱动程序编号),每行中的其他4列具有与该记录相关的数据。对于每条记录,大约有50行数据(总共不到2,000行)。 .csv文件有一个标题行。

我需要阅读.csv文件并确定每个用户的最后一个条目,这样我就可以转到下一个用户了。我试图让它来比较第一列和下一行的条目。

到目前为止我有这个,它返回错误的行号,它们在1到5行之间的任何地方......?!?!

require 'csv-mapper'

  Given(/^I compare the driver numbers from rows "(.*?)" to "(.*?)"$/) do |firstrow, lastrow|
    data = CsvMapper.import('C:/auto_test_data/Courts code example csv.csv', headers: true) do
      [dln]
    end

    row = firstrow.to_i
    while row <= lastrow.to_i
      @licnum1 = data.at(row).dln
      @licnum2 = data.at(row+1).dln

      if
        @licnum2 == @licnum1
          $newrecord = "same"
      else
        $newrecord = @licnum2
      end

      if   
        $newrecord != "same"
        puts "Last row for #{@licnum1} is #{row}\n"
      end

      row = row + 1
    end
  end

这是.csv文件的布局:

recordidentifier1   dataitem1   dataitem2 code descriptionforcomparison
recordidentifier1   dataitem1   dataitem2 code descriptionforcomparison
recordidentifier2   dataitem1   dataitem2 code descriptionforcomparison
recordidentifier2   dataitem1   dataitem2 code descriptionforcomparison

非常感谢所有帮助。

谢谢,

彼得

1 个答案:

答案 0 :(得分:0)

这是一种方法

UserWizard = {
  init: function(name) {
    this.firstInit.call(name);
    this.secondInit.call(name);
  },

  firstInit: function(name) {
    // ...
  },
  secondInit: function(name) {
     // ...
  }

}