我必须比较两个由电子商务填充的 Csv 文件。这些文件总是相似的,除了较新的文件有不同数量的项目,因为目录每周都在变化。
CSV 文件示例:
sku_code, description, price, url
001, product one, 100, www.something.com/1
002, prouct two, 150, www.something.com/2
通过比较在不同日期提取的两个文件,我想生成一个已停产的产品列表和另一个已添加的产品列表。
我的索引应该是 Sku_code,它在目录中是唯一的。
我一直在使用stackoverflow 中的这段代码:
#old file
f1 = IO.readlines("oldfeed.csv").map(&:chomp)
#new file
f2 = IO.readlines("newfeed.csv").map(&:chomp)
#find new products
File.open("new_products.txt","w"){ |f| f.write((f2-f1).join("\n")) }
#find old products
File.open("deleted_products.txt","w"){ |f| f.write((f1-f2).join("\n")) }
我的问题
它运行良好,除了在一种情况下:当sku_code
更改之后的字段之一时,产品被认为是“新的”(例如:价格的变化),即使对于我的需要,它是相同的产品。
sku_code
仅比较而不是整行的最聪明的方法是什么?