前提・実現したいこと
Ruby初心者です。
前提・実現したいこと
Rubyで二つのcsvファイル比較して、新しく追加されたレコードのみを配列に格納したい。
【問題点】
新しく追加された配列のデータの要素を配列に格納する機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
`block in <main>': undefined method `<' for nil:NilClass (NoMethodError)
該当のソースコード
Ruby
1#encoding: SJIS 2#lib 3require 'csv' 4require 'diff/lcs' 5 6#var_num 7checkonlynewdiff = Array.new() 8newolddiff = Array.new() 9 10puts "start..." 11 12#read csvfile(old&new) 13data1 = CSV.read "csvtestold.csv" 14data2 = CSV.read "csvtestnew.csv" 15 16#diff_old&new read_csv_data 17diffs = Diff::LCS.diff(data1, data2) 18 19diffs.each do |diff| 20 diff.each do |line| 21 newolddiff << line.to_a 22 end 23end 24 25#purpose:read only diff_new_add_data 26newolddiff.each_index{|idx| 27 if newdiff[idx][0] == "+" 28 #happen to error message 29 checkonlynewdiff << newolddiff[idx][3] 30 end 31} 32puts "end..."
試したこと
メソッドが存在しないのがエラー原因と書かれているので、@newdiff[idx][3].to_aにして試したが駄目でした。
補足情報(FW/ツールのバージョンなど)
Ruby:2.5.2
Ruby library install:gem install diff-lcs
OS:Windows10
csvファイル
csvtestold.csv------
name,id,date
sho,220,2018/1/5
akiho,221,2018/1/6
sss, 222,2018/1/7
csvtestnew.csv------
name,id,date
akiho,221,2018/1/6
sss, 222,2018/1/7
kdo,223,2018/1/8
shi,224,2018/1/9
skd,225,2018/1/10
参考URL
(rubyの変数について)
https://qiita.com/nakamaru/items/1339303487fe8a876825
(Class: Diff::LCS::Change)
https://www.rubydoc.info/gems/diff-lcs/1.2.5/Diff/LCS/Change
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/15 09:07
退会済みユーザー
2019/01/15 09:09 編集
退会済みユーザー
2019/01/15 09:12
2019/01/15 10:02 編集
退会済みユーザー
2019/01/15 10:08
2019/01/15 10:25