着順と一緒の順に、馬番・騎手・人気・倍率を出力します。
コード全部は載せませんが、重要なところだけをピックアップします。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xlrd | |
import os.path | |
nanR =10 #何レース目か | |
r =nanR-1 #数え方を合わせます | |
#Excelファイルを開きます | |
xlsfile ="2016010506.xls" | |
if os.path.exists(xlsfile): | |
xls = xlrd.open_workbook(xlsfile) | |
sheet1 = xls.sheet_by_index(0) | |
開催場所 | |
basho = sheet1.cell(0,0).value.split(" ")[3] | |
""" | |
着順・馬番・馬名・騎手・人気・単勝 | |
""" | |
#空のリストを作成 | |
allbaba=[] | |
allkyori=[] | |
allchaku=[] | |
allumaban=[] | |
#12レース分のデータがあるので、縦方向に3R,横方向に4R分のループを作ります | |
for n in range(4): | |
for m in range(3): | |
#ループの中で空のリストを作ります | |
baba=[] | |
kyori=[] | |
chakujun =[] | |
umabanjun =[] | |
#10R以降は書式が異なるのでifで場合分けします | |
if nanR>=10: | |
race = sheet1.cell(1+m*25,n*12).value.split(" ")[2] | |
else: | |
race = sheet1.cell(1+m*25,n*12).value.split(" ")[3] | |
#馬場状態とそのレースの距離を出力 | |
baba += race[:1] | |
kyori =race[1:5] | |
#着順に相当する列を取得し、ループで得た結果を空のリストに追加していきます | |
for i in range (4,22): | |
chaku = sheet1.cell(i+m*25,0+n*12).value.split(" ") | |
if "" in chaku: | |
chaku.remove("") | |
chakujun += chaku | |
#あとは同様 | |
for i in range (4,22): | |
umaban = sheet1.cell(i+m*25,1+n*12).value.split(" ") | |
if "" in umaban: | |
umaban.remove("") | |
umabanjun += umaban | |
#レース毎の結果を.appendで追加していきます | |
allbaba.append(baba) | |
allkyori.append(kyori) | |
allchaku.append(chakujun) | |
allumaban.append(umabanjun) | |
#最初に入力したレースの結果を出力します | |
print (allbaba[r]) | |
print (allkyori[r]) | |
print (allchaku[r]) | |
print (allumaban[r]) |
出力結果(3回分)
['芝']
1600
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16']
['8', '3', '7', '15', '11', '5', '2', '12', '9', '4', '10', '13', '1', '6', '16', '14']
['ルメー', 'ベリー', '横山典', '田中勝', '柴田善', '柴田大', '戸崎圭', '内田博', '蛯名正', '石橋脩', '津村明', '柴山雄', '井上敏', '池添謙', 'コント', '伴啓太']
['1', '3', '6', '4', '9', '8', '2', '7', '11', '5', '13', '10', '16', '12', '15', '14']
['1.8', '10.8', '15.6', '13.4', '29.8', '21.3', '5.6', '18.9', '46.8', '14.3', '104.0', '31.1', '345.4', '67.8', '177.3', '136.6']
----------------------------------
['ダ']
1800
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15']
['3', '5', '1', '13', '7', '8', '2', '10', '9', '14', '11', '4', '15', '6', '12']
['デムー', '黛弘人', '勝浦正', '戸崎圭', 'ベリー', '嘉藤貴', '吉田豊', '内田博', '横山典', '大野拓', '蛯名正', '江田照', '柴山雄', '石川裕', '柴田大']
['2', '9', '3', '1', '10', '12', '7', '6', '8', '13', '5', '15', '11', '4', '14']
['4.8', '50.9', '5.9', '2.5', '59.2', '73.1', '32.4', '12.1', '39.3', '98.6', '8.9', '189.3', '61.6', '7.1', '144.1']
----------------------------------
['芝']
1600
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
['4', '10', '6', '2', '9', '1', '8', '5', '7', '3']
['丸山元', 'ベリー', '大野拓', 'ルメー', '柴田大', '戸崎圭', '嘉藤貴', '池添謙', '長岡禎', '蛯名正']
['4', '1', '7', '2', '8', '5', '10', '3', '9', '6']
['10.4', '1.9', '17.0', '4.6', '22.8', '11.4', '137.7', '8.2', '53.8', '11.6']
と、だいぶ長くなってきましたね。
正直わかりにくくてブログ書きながらも自分しかわからないコードになってしまっているかもしれません。
今回は微修正や調整が主だったので、pythonの新たなメソッドを使ったりはしていません。
強いて言えば前回の.appendを使うところが重要ですねw
.appendの使い方ですが、例えば
a=[1,2,3,4,5]と
b=[6,7,8,9] というリストがあったときに
a + b => [1,2,3,4,5,6,7,8,9]
ですが
a.append(b) =>[1,2,3,4,5,[6,7,8]]
となります。
bレース目のデータを取り出すとしたら、前者のよくわからないところから取得するよりも、次元を増やして別々のリストから取得したほうがわかりやすいですよね。
.appendにより決まった数値から機会的に欲しい数値を取り出してくれるリスト作成を学びました。
<<<Python競馬予想プログラミング【4】~Excelシートをすべてリスト化~
0 件のコメント:
コメントを投稿