检查CSV文件ruby中的匹配行



我是ruby的新手,我想检查csv文件中具有相同数字的行。

我要做的是遍历输入csv文件并将元素从输入文件复制到输出文件,同时添加另一列名为"duplicate"在输出文件中,当将数据从输入复制到输出时,检查输出文件中是否已经有类似的电话,如果电话已经存在,则添加" double "到重复列中的行。

这是我的。

file=CSV.read('input_file.csv')
output_file=File.open("output2.csv","w")
for row in file
output_file.write(row)
output_file.write("n")
end
output_file.close

的例子:

tbody> <<tr>
Phone
(202) 221 - 1323
(201) 321 - 0243
(202) 221 - 1323
(310) 343 - 4923

所以基本上你想把输入写入输出并附加一个"双引号"在第二次出现重复时?

您的输入输出看起来很好。为了得到"双"字标志,简单地计算列表中每个数字的出现次数。如果多于一个,就是复制品。但是,由于您只希望在第二次出现时显示标志,因此只需计算该数字在该点之前出现的频率:

lines = CSV.read('input_file.csv')
lines.each_with_index do |l,i|
output_file.write(l + ",")
if lines.take(i).count(l) >= 1 
output_file.write("dupl")
end
output_file.write("n")
end

l为当前行。take(i)是在当前行之前的所有行,但不包括当前行,count(l)应用于此计算数字出现的频率,如果它多于一个,则打印" double ">

可能有一个更有效的答案,这只是一个快速和容易理解的版本。

最新更新