ん?今月なんか引き落とし額がデカいぞ。
そんなわけで、カードの引き落とし額を調べてみた。
うちのメインカードはOricoなんで、引き落とし明細のCSVをサイトからもらってきて。
んで、以下を走らせてみる。
#!/usr/bin/ruby -EUTF-8 # -*- mode:ruby; coding:utf-8 -*- require 'nkf' require 'csv' class OricoCsv class Record def initialize(s) @date = @name = @owner = @spend = nil if s.length > 10 @date = s[0].clone if s[0] != nil @name = s[1].clone if s[1] != nil @owner = s[3].clone if s[3] != nil @spend = s[12].clone if s[12] != nil end end def Date @date end def Name @name end def Spend @spend end def JSpend @spend.gsub /^\?(.+)$/,"\\1円" end def SpendE self.JSpend.gsub(/,/,"").to_i end def Owner @owner end end # # # def initialize(fn) @ds = loadfile(fn) @s = [] if @ds.length > 0 @ds.each{|s| @s[@s.length] = Record.new(s) } end @s.compact! end def Datas @ds end def Das @s end # def loadfile(fn) r = [] if File.exist?(fn) == true d = "" open("|nkf -w \"#{fn}\"","r").each{|x|d += x.clone} r = CSV.parse(d) end r end end ########### h = Hash.new ARGV.each{|fn| c = OricoCsv.new(fn) c.Das.each{|x| if x.Spend != nil && x.Owner != "ご利用者" if h["#{x.Name}"] == nil h["#{x.Name}"] = x.SpendE else h["#{x.Name}"] += x.SpendE end end } h.each{|a,b| puts "%-30s %-10d\n" % [ a,b ] } }
細部が間に合わせなのは仕様だ。
で、走らせてみると、こんなんになった。
$ ruby searchOrico.rb orico.csv ISP 5542 IIJMIO 3071 : : AMAZON.CO.JP 28387 ニコニコプレミアム 540 Edyチャージ 22000 : : デル 17655 AMAZON DOWNLOADS 2700 : :
ああ、Dellとアマゾンで5万近くか。これが原因ですな。
Dellは来月も18000円くらいになると思うから、出費削減ですねえ。
むー、未確定ぶんも結構あるわ。これは来月も大差ないか。
節約せねば。