0

我正在尝试从比赛 ID 中提取球队和球员统计数据列表。对我来说一切看起来都很好,但是当我运行我的“for循环”来调用函数来提取我想要的统计信息时,它只是从我的 try/except 块中打印错误。我对 python 还是很陌生,这是我的第一个项目,所以我在过去几天里尝试了所有我能想到的东西,但没有运气。我相信问题出在我的实际拉取请求上,但我不确定我是否也在使用我发现的 GitHub 库来帮助我使用 Riot API,同时我更改和更新它以获得我想要的信息。

def get_match_json(matchid):
url_pull_match = "https://{}.api.riotgames.com/lol/match/v5/matches/{}/timeline?api_key={}".format(region, matchid, api_key)
match_data_all = requests.get(url_pull_match).json()

# Check to make sure match is long enough
try:
    length_match = match_data_all['frames'][15]
    return match_data_all

except IndexError:
    return ['Match is too short. Skipping.']

然后这是 stat 函数的简化版本:

def get_player_stats(match_data, player):
# Get player information at the fifteenth minute of the game.

player_query = match_data['frames'][15]['participantFrames'][player]
player_team = player_query['teamId']
player_total_gold = player_query['totalGold']
player_level = player_query['level']

代码中还有一些其他功能,但我不确定它们是否也有故障,或者是否需要它们来找出错误。但这里是调用请求并定义变量“matchid”的“for循环”

for matchid_batch in all_batches:
match_data = []
for match_id in matchid_batch:
    time.sleep(1.5)
    if match_id == 'MatchId':
        pass

    else:
        try:
            match_entry = get_match_row(match_id)
            if match_entry[0] == 'Match is too short. Skipping.':
                print('Match', match_id, "is too short.")

            else:
                match_entry = get_match_row(match_id).reshape(1, -1)
                match_data.append(np.array(match_entry))

        except KeyError:
            print('KeyError.')

match_data = np.array(match_data)
match_data.shape = -1, 17

df = pd.DataFrame(match_data, columns=column_titles)
df.to_csv('Match_data_Diamond.csv', mode='a')
print('Done Batch!')

由于这是我的第一个项目,任何帮助将不胜感激,因为我找不到关于这个特定主题的任何信息,所以我真的不知道在哪里可以了解为什么它不能靠我自己工作。

4

0 回答 0