前回は、ロトくじの抽選番号を抽出した。
今回は、これらの抽出データを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ファイルを作成する »