我是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
的例子:
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 ">
可能有一个更有效的答案,这只是一个快速和容易理解的版本。