e コマースによって取り込まれた 2 つの Csv ファイルを比較する必要があります。カタログは毎週変更されるため、新しいファイルのアイテム数が異なることを除いて、ファイルは常に類似しています。
CSV ファイルの例:
sku_code, description, price, url
001, product one, 100, www.something.com/1
002, prouct two, 150, www.something.com/2
別の日に抽出した 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")) }
私の問題
1 つのケースを除いて、うまく機能します: の後のフィールドの 1 つsku_code
が変更された場合、製品は "新しい" (例: 価格の変更) と見なされますが、私のニーズでは同じ製品です。
sku_code
行全体ではなく行のみを比較する最も賢い方法は何ですか?