min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Python 3 で csv を扱う(pandas不使用、import csvしない)

Amazon MasterCard を契約した。

min117.hatenablog.com

利用明細は Vpass というオンラインサービスで確認できる。

f:id:min117:20171126095302p:plain

csvにも出力可能。

f:id:min117:20171126095631p:plain

出力するとこうなる。

$ vim 201712-2_nkf_wLux.csv

f:id:min117:20171126095611p:plain

何にどれくらい使ったか csvをPython3 に分析させることにする。例えばこんな感じ。

$ python3 csvstrip.py 201712-2_nkf_wLux.csv

f:id:min117:20171126100244p:plain

明細に「ソフトバンク」や「インターネットイニシアティブ」という文字列が含まれていたら「通信料」として合計する、とかやりたい。

 

できた。環境は macOS High Sierra

f:id:min117:20171126095501p:plain

パイソンは Python3

f:id:min117:20171126095455p:plain

(前提)

Python 3 を使うPython 2.7は考慮しない。

・pandas とやらは使用しない。Python標準搭載の機能のみ使う。

・import csv もしない。同上。

(コード)

$ vim csvstrip.py

f:id:min117:20171126100836p:plain

1行目)

・コード内でのpythonバージョンの指定(シェバン)はしない。実行時に指定する。

23行目)

print(i) は改行まで含めてしまうからこんな感じで改行まで出力されてしまう。

f:id:min117:20171126101415p:plain

26行目、27行目)

print(i[:-1]) または print(i,end='') とすれば改行を取り除いてくれる。

f:id:min117:20171126101806p:plain

59行目から66行目)

正規表現を使って明細行に「ソフトバンク」という文字列が含まれていたら「通信の明細です」と文字列を出力できるようにしている。

match = re.search('.*ソフトバンク.*, i):

if match:

f:id:min117:20171126102426p:plain

ここで通信料を足してprintすれば、通信料の合計だけを取れる。あとでさらに試す。