ももんが家計簿からZaimへ移行
家計簿管理を楽したくてスマホでレシートを読み取るクラウドサービスを試してみた。
MoneyForwardはぜんぜん読み取らなかった。
Zaimはかなり読む。フラッシュを焚いた方が認識率は上がる。
Zaimがいい感じなので、ももんが家計簿のデータをコンバートしてアップロードした。
CSV形式部分を抜き取ってZaimの読み込めるCSVフォーマットに変換したpythonスクリプトを以下に貼る。あくまで自分用。
# -*- coding: utf-8 -*-
import urllib2
import re
himoku = {
u'e:食費': u'食費,食料品',
u'e:日用品': u'日曜雑貨,消耗品',
u'e:被服費': u'美容・衣服,洋服',
u'e:交際費': u'交際費,プレゼント',
u'e:交通費': u'クルマ,ガソリン',
u'e:教育費': u'教育・教養,塾',
u'e:通信費': u'通信,インターネット関連費',
u'e:娯楽費': u'エンタメ,レジャー',
u'e:医療費': u'医療・保険,病院代',
u'e:光熱費': u'水道・光熱,電気料金',
u'e:住居費': u'住まい,家具',
u'e:保険料': u'クルマ,自動車保険',
u'e:その他': u'その他,その他',
u'e:税金': u'税金,その他',
}
def output_month(year,month,fp):
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm='KAKEIBO',
uri='http://hoge:8080/',
user='hoge',
passwd='hogehoge')
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
page = urllib2.urlopen('http://hagenas2.home:8080/?plugin=csv&date='+year+month)
u = unicode(page.read(),'euc_jp')
pre = re.search('(.*?)',u,re.DOTALL)
for line in pre.group(1).splitlines():
c = re.match(r'"(\d+)","(.*?)","(.*?)","(\d+)","(.*?)","(.*?)","(.*?)"',line)
if c:
try:
fmt = u'{4}-{5}-{0:02d},payment,{1},-,-,,,{3},(プレミアム会員で表示),0,{2},(プレミアム会員で表示),(プレミアム会員で表示),(プレミアム会員で表示),(プレミアム会員で表示)\r'.format(int(c.group(1)),himoku[c.group(2)],c.group(4),c.group(6),year,month)
except:
print c.group(0).encode('cp932')
fp.write(fmt.encode('cp932'))
for year in ['2008','2009','2010','2011','2012','2013','2014','2015']:
fp = open('hoge_kakeibo'+year+'.csv','w')
fp.write(u'日付,方法,カテゴリ,ジャンル,支払元,入金先,商品,メモ,場所,通貨,収入,支出,振替,残高調整,通貨変換前の金額,集計の設定\r'.encode('cp932'))
for month in ['01','02','03','04','05','06','07','08','09','10','11','12']:
output_month(year,month,fp)
fp.close()
#output_month('2016','01',fp)
コメント