Nekostack

Golang, Swift, Vim, Cat, Curry, Whisky.

MUFG の渋い支払明細 CSV をまともにする

Posted on 04 January 2017.

1. はじめに

MUFG のカードの支払明細は CSV で取得できるのだが, あまり処理しやすいデータとはいえない.

  • 通常払いご利用合計のような値だけがある行が突然出現する.
  • 備考欄が分割払いの詳細欄を兼ねている.
  • 分割払いについては備考の列に, 今回支払分・支払総額・手数料・支払残高がまとめて記録されている.
  • 一部の金額の値が全角で記録されている.

上のようなフォーマットになっているので, 今月の支払いの内訳だけを眺めづらい.

2. 加工してまともにする

スクリプトを書いた.

scripts/sanitize_mufg_json.py · mitsuse/scripts

やってることは, 以下の通り.

  • 通常・分割の情報を各支払に明示的に持たせる.
  • 利用店舗名欄・備考欄の文字列内部の数値・空白を半角英数変換
  • 支払項目を表現してない行は取り除く.
  • 分割の今回支払分を抽出,「利用金額」とする

CSV は個人的に嫌いなので, JSON に変換した前提で処理するようにした (別途そのまま JSON で保管するため).

cat 201702.csv | iconv -f SJIS -t UTF-8 | csv2json -s , - - | python sanitize_mufg_json.py

このように csv を流すと多少良くなったJSON が標準出力に吐き出される. csv2json は npm にあるもの.

3. 所感

カードのお話を書くのはちょっと憚られるという気持もありつつ (少なくともこのカードを使ってることがわかるので). 自分で手直しできるレベルなのでいいのだけれど, それだけになぜ元のフォーマットでいいと思ったのか謎. 全角半角英数とかは利用状況にもよると思う (半角英数でいいけど) が, 構造を持っているデータや明らかに異なるデータの表現フォーマットとして CSV を使うの別に構わないけど (いや, よくないが), カラム増やすなりしてほしい気持ちがある.