いつもの感じでもくもくしていました。いつもと違うのはメインのメンバーが揃って不在なことで、 @cotton_desu さんが準備や司会業や会計業などもろもろ頑張っていました。ありがとうございます!
今回は特定用途のCSVファイルを取り込んでそれをいい感じにフィルタリングするというようなスクリプトを書いていました。Rubyで。
気付き
CSV converterという仕組みがあり、ファイルを読み込んでCSVフォーマットの文字列をパースするときに特定のルールにマッチしていれば得られた値をNumericやDateの型にしてくれるという便利なものです。ドキュメント見ていて今回初めて気付きました。くわしい記事を見つけたので参照してみてください。
ドキュメントはこちらです。
自分のケースではカンマを含む金額のフィールドがありそれを数値として扱いたかったため自作converterを作って処理しました。
require 'csv' filename = 'foo.csv' converter = -> (f) { begin e = f.encode(CSV::ConverterEncoding) e =~ /[\d,]+/ ? Integer(e.gsub(/,/, '')) : f rescue f end } CSV.foreach(filename, converters: [converter]) do |row| # ... end
銀行口座の明細CSVファイルを取り込んで項目などでフィルター掛けて畳み込むみたいなことが一応できました。(CSVファイル読み込みさえすればあとはRuby組み込みのメソッドを使ってるだけですが…w) 進捗出せたので良かったです。
# 電気料金の引き落とし額の合計値を求める例 bank_account.parsed_data.select {|d| d.summary =~ /電気/ }.reduce(0) {|sum, d| sum + d.payment } => 7291
懇親会
いわゆる昔ながらのビアガーデンという雰囲気。この日は相当暑い日でしたのでビールが進みました😆 食べ放題だったのですが、最初のバッチ(3枚目の写真)で割と満腹になったのは少々誤算ではありましたねw
次回はkzrb 5周年。