簡體   English   中英

檢查 csv 文件 ruby 中的匹配行

[英]check for matching rows in csv file ruby

我是 ruby 的新手,我想檢查 csv 文件中具有相同編號的行。

我想做的是 go 通過輸入 csv 文件並將輸入文件中的元素復制到 output 文件,同時向 output 文件添加另一列名為“重復”的列,然后檢查 output 文件中是否已經有類似的電話將數據從輸入復制到 output 然后如果電話已經存在,將“dupl”添加到重復列中的行。

這就是我所擁有的。

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

例子:

電話
(202) 221-1323
(201) 321-0243
(202) 221-1323
(310) 343-4923

output 檔案

電話 復制
(202) 221-1323
(201) 321-0243
(202) 221-1323 雙重
(310) 343-4923

所以基本上你想在第二次出現重復時將輸入寫入 output 和 append 一個“dupl”?

您對 output 的輸入似乎沒問題。 要獲得“dupl”標志,只需計算列表中每個數字的出現次數。 如果它不止一個,那就是重復的。 但是由於您只想在第二次出現時顯示該標志,只需計算該數字在該點之前出現的頻率:

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)應用於此計算之前出現的數字的頻率,如果它超過一個,則打印“dupl”

可能有一個更有效的答案,這只是一個快速且易於理解的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM