前回は、ロトくじの抽選番号を抽出した。
今回は、これらの抽出データをCSVファイルに変換するスクリプトを書く。
■抽選番号データ
ロト7データ
ロト6データ
ミニロトデータ
くじの種類によって抽出データのフォーマットが微妙に異なるため、1つのスクリプトですべてのくじのCSVファイルを作成するようなことはせず、くじ毎にスクリプトファイルを作る。
このあたりは、変にキバったところで誰も褒めてくれないので、できるだけ簡単に済ませる。
まずは、ミニロトCSVファイル作成スクリプトから書いてみよう。
■ファイル名 mkmini.py
# ミニロト抽選番号CSVファイルの作成 import sys, os, re, csv if len(sys.argv) != 2: print('引数の数が間違っています。') print('python {} ミニロト抽選番号ファイル'.format(os.path.basename(__file__))) sys.exit() spc = re.compile(r'\s+') # CSV Writerの準備 out_csv = open('miniloto.csv', 'wt', newline='') out_w = csv.writer(out_csv) # CSVヘッダー行出力 out_w.writerow(['回', '日付', '数字1', '数字2', '数字3', '数字4', '数字5', 'ボーナス数字',\ '一等の当選数', '二等の当選数', '三等の当選数', '四等の当選数', '一等当選金額', '二等当選金額', '三等当選金額', '四等当選金額']) with open(sys.argv[1]) as f: while True: l1 = f.readline() if not l1: break # 続けて2行読み込む l2 = f.readline() l3 = f.readline() # 行末の改行を削除する l1 = l1.replace('\n', '') l2 = l2.replace('\n', '') l3 = l3.replace('\n', '') # データを空白文字で分割し抜き出す round, year = re.split(spc, l1) date, no1, no2, no3, no4, no5, bn, num1, num2, num3, num4 =\ re.split(spc, l2) m1, m2, m3, m4 = re.split(spc, l3) # データ整形 mon, day = date.split('/') date = '/'.join([year, mon, day]) bn = bn.replace('(', '').replace(')', '') num1 = num1.replace('口', '').replace(',', '') num2 = num2.replace('口', '').replace(',', '') num3 = num3.replace('口', '').replace(',', '') num4 = num4.replace('口', '').replace(',', '') m1 = m1.replace('円', '').replace(',', '') m2 = m2.replace('円', '').replace(',', '') m3 = m3.replace('円', '').replace(',', '') m4 = m4.replace('円', '').replace(',', '') out_w.writerow([round, date, no1, no2, no3, no4, no5, bn,\ num1, num2, num3, num4, m1, m2, m3, m4]) out_csv.close()
こいつを実行すると、カレントディレクトリにミニロト抽選番号のCSVファイルが作成される。
$ python mkmini.py miniloto.data $ ls miniloto.csv miniloto.csv
miniloto.csv
(次の記事)
ロト6抽選番号のCSVファイルを作成する »