いきなり格好良くループを作るよりは、地味~にどこの値を取得してどうするのかを把握することが大切です。いきなりあれもこれもクリアする条件の式を書こうとすると、無駄に長くてわかりにくい式になります。変数をちゃんと使ってわかりやすく作業していきましょう
ということで、今回はほぼ同じスタイルの読み込みの繰り返しを行うコードを作成しました。
※Python競馬予想プログラミング【2】~Excelファイルを読み込む~ と同じExcelファイルを使用してください
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 | |
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] | |
race = sheet1.cell(1,0).value.split(" ")[3] | |
baba = race[:1] | |
kyori = race[1:5] | |
print (basho) | |
print (baba) | |
print (kyori) | |
""" | |
着順・馬番・馬名・騎手・人気・単勝 | |
""" | |
chakujun =[] | |
umabanjun =[] | |
bameijun =[] | |
kishujun = [] | |
ninkijun =[] | |
tanshoujun =[] | |
for i in range (4,22): | |
chaku = sheet1.cell(i,0).value.split(" ") | |
if "" in chaku: | |
chaku.remove("") | |
chakujun += chaku | |
for i in range (4,22): | |
umaban = sheet1.cell(i,1).value.split(" ") | |
if "" in umaban: | |
umaban.remove("") | |
umabanjun += umaban | |
for i in range (4,22): | |
bamei = sheet1.cell(i,2).value.split(" ") | |
if "" in bamei: | |
bamei.remove("") | |
bameijun += bamei | |
for i in range (4,22): | |
kishu = sheet1.cell(i,4).value.split(" ") | |
if "" in kishu: | |
kishu.remove("") | |
kishujun += kishu | |
for i in range (4,22): | |
ninki = sheet1.cell(i,9).value.split(" ") | |
if "" in ninki: | |
ninki.remove("") | |
ninkijun += ninki | |
for i in range (4,22): | |
tanshou = sheet1.cell(i,10).value.split(" ") | |
if "" in tanshou: | |
tanshou.remove("") | |
if "" in tanshou: | |
tanshou.remove("") | |
tanshoujun += tanshou | |
print (chakujun) | |
print (umabanjun) | |
print (bameijun) | |
print (kishujun) | |
print (ninkijun) | |
print (tanshoujun) |
長いですが着順から下はほぼ同じなので着順のところだけ解説を載せます
for i in range (4,22):
#最高18頭立てなので、マジックナンバーで入れといてかまわないと思います
4~22(1頭目~18頭目)までのループを作ります
chaku = sheet1.cell(i,0).value.split(" ")
#着順の値を取得し、.valueで文字列に変換します
#.split(" ")でスペース区切りでリストを作成します
=>["", "1"] (最初の出力結果)
if "" in chaku:
#最初の空の要素は邪魔なので消します。 chakuのなかに""があれば~
chaku.remove("")
#""を消す
chakujun += chaku
#予めつくっておいた空のchakujunリストにchakuを代入して付け足していく
これで一応 場所・馬場・距離・着順・馬番・馬名・騎手・人気・単勝
のデータを取得できました
基本的にはあとはこの作業を単純化し、すべてのExcelファイルに適用していくだけです
道筋は見えています。
少しずつ進めていきましょう
<<<Python競馬予想プログラミング【2】~Excelファイルを読み込む~
for i in range (4,22):
#最高18頭立てなので、マジックナンバーで入れといてかまわないと思います
4~22(1頭目~18頭目)までのループを作ります
chaku = sheet1.cell(i,0).value.split(" ")
#着順の値を取得し、.valueで文字列に変換します
#.split(" ")でスペース区切りでリストを作成します
=>["", "1"] (最初の出力結果)
if "" in chaku:
#最初の空の要素は邪魔なので消します。 chakuのなかに""があれば~
chaku.remove("")
#""を消す
chakujun += chaku
#予めつくっておいた空のchakujunリストにchakuを代入して付け足していく
これで一応 場所・馬場・距離・着順・馬番・馬名・騎手・人気・単勝
のデータを取得できました
基本的にはあとはこの作業を単純化し、すべてのExcelファイルに適用していくだけです
道筋は見えています。
少しずつ進めていきましょう
<<<Python競馬予想プログラミング【2】~Excelファイルを読み込む~
0 件のコメント:
コメントを投稿