首页 > 解决方案 > Ruby CSV 比较两个 CSV 文件

问题描述

我有两个具有相同标题的 CSV 文件。我想比较这些文件并返回第二个文件中缺少的条目。这是一个例子:

文件 1.csv

fname,lname,city,state
Joe,Smith,Dallas,TX
Jane,Done,Baltimore,MD
Frank,Jones,Plano,TX

文件2.csv

fname,lname,city,state
Joe,Smith,Dallas,TX
Jane,Done,Baltimore,MD

这是我的代码:

# Returns True if a match is found
# and False if none is found
def find_in_csv(csv_text,search_column,search_string)
  csv_text.find {|row|
    return row[search_column] == search_string
  }
end

如何扩展此功能以允许返回缺失的行?

标签: rubycsv

解决方案


这将返回 file1.csv 中存在但在 file2.csv 中丢失的行数组

csv1 = CSV.read("file1.csv")
csv2 = CSV.read("file2.csv")

csv1 - csv2

推荐阅读