リストを反復処理して文字列を検索するコードがあります。リストはサッカー選手の名前です。ほとんどすべてのプレーヤーで機能しますが、ランダムに ashley westwood というプレーヤーを認識しません。リストを確認したところ、彼は間違いなくそこにいます。すべてが小文字であり、スクリプトは他のすべてのプレーヤーを認識しているため (これまでのところ) 機能します。
基本的に、「in」を使用するとどのような問題が発生する可能性があるかを尋ねています。これから取得する DB エントリはまったく意味がありません。
少し汚れていて、実際には関係ありませんが、コードを含めました。
私も相対的初心者です。
コード
if 'corner' in text3[:50] or ('inswinging corner' in text3) or ('outswinging corner' in text3) :
print text3
print time
for player in away_players_names:
this_player = player[0].lower()
upper = player[0]
if this_player in segment:
player_id = away_team_dict[upper]
player_id = int(player_id[0])
etype = 10
team = 2
cur.execute("""INSERT INTO football.match_events(type, player, time, game_id, team) VALUES (%s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE game_id = game_id""", (etype, player_id, time, game_id, team))
db.commit()
for player in home_players_names:
this_player = player[0].lower()
print this_player
upper = player[0]
if this_player in segment:
player_id = home_team_dict[upper]
player_id = int(player_id[0])
etype = 10
print player_id
team = 1
cur.execute("""INSERT INTO football.match_events(type, player, time, game_id, team) VALUES (%s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE game_id = game_id""", (etype, player_id, time, game_id, team))
db.commit()
以下は、印刷されたステートメントと失敗の例です。
corner taken right-footed by ashley westwood to the near post
38.22
bradley guzan
ron vlaar
ciaran clark
nathan baker
matthew lowton
charles n'zogbia
ashley westwood
fabian delph
christian benteke
jordan bowery
andreas weimann
shay given
joe bennett
yacouba sylla
simon dawkins
barry bannan
darren bent
brett holman
これは名前を認識していませんが、その理由はわかりませんか?
誰?