Michael T Johnson
Michael T Johnson

Reputation: 689

Python request returning only 1 element

Here is my code:

import base64
import requests
import json
import csv

USERNAME, PASSWORD = 'Username', 'Password'
req = requests.get(
    url="https://api.mysportsfeeds.com/v1.1/pull/nhl/2017-2018-regular/game_startinglineup.json?gameid=20171109-EDM-NJD", 
    params={
        "fordate": "20171009"
     },
    headers={
        "Authorization": "Basic " +
                base64.b64encode('{}:{}'.format(USERNAME,PASSWORD)\
                                .encode('utf-8')).decode('ascii')
    }
 )
data = req.json()

for i in range(1):
    team_home = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']
for i in range(2):
    team_away = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']
#headers = ["HomeTeam", "AwayTeam"]

for i in range(18):
    homeplayer = team_home[i]['position']
    awayplayer = team_away[i]['position']
    homename = team_home[i]['player']['LastName']
    awayname = team_away[i]['player']['LastName']
    my_data =[]

    my_data.append([homeplayer, homename, awayplayer, awayname])
print(my_data)

Here is what i am requesting:

{"gamestartinglineup":{"lastUpdatedOn":"2017-12-12 11:56:50 PM","game":{"id":"41009","date":"2017-11-09","time":"7:00PM","awayTeam":{"ID":"24","City":"Edmonton","Name":"Oilers","Abbreviation":"EDM"},"homeTeam":{"ID":"7","City":"New Jersey","Name":"Devils","Abbreviation":"NJD"},"location":"Prudential Center"},"teamLineup":[{"team":{"ID":"24","City":"Edmonton","Name":"Oilers","Abbreviation":"EDM"},"expected":{"starter":[{"position":"Goalie-Backup","player":{"ID":"5552","LastName":"Brossoit","FirstName":"Laurent","JerseyNumber":"1","Position":"G"}},{"position":"ForwardLine1-RW","player":{"ID":"4854","LastName":"Maroon","FirstName":"Patrick","JerseyNumber":"19","Position":"LW"}},{"position":"ForwardLine2-C","player":{"ID":"4993","LastName":"Nugent-Hopkins","FirstName":"Ryan","JerseyNumber":"93","Position":"C"}},{"position":"ForwardLine4-C","player":{"ID":"4730","LastName":"Letestu","FirstName":"Mark","JerseyNumber":"55","Position":"C"}},{"position":"ForwardLine3-LW","player":{"ID":"11308","LastName":"Caggiula","FirstName":"Drake","JerseyNumber":"91","Position":"LW"}},{"position":"ForwardLine4-RW","player":{"ID":"5875","LastName":"Khaira","FirstName":"Jujhar","JerseyNumber":"16","Position":"LW"}},{"position":"ForwardLine3-C","player":{"ID":"3637","LastName":"Jokinen","FirstName":"Jussi","JerseyNumber":"36","Position":"LW"}},{"position":"ForwardLine3-RW","player":{"ID":"4997","LastName":"Strome","FirstName":"Ryan","JerseyNumber":"18","Position":"C"}},{"position":"ForwardLine1-C","player":{"ID":"5576","LastName":"McDavid","FirstName":"Connor","JerseyNumber":"97","Position":"C"}},{"position":"ForwardLine1-LW","player":{"ID":"5417","LastName":"Draisaitl","FirstName":"Leon","JerseyNumber":"29","Position":"C"}},{"position":"ForwardLine2-LW","player":

My Output is: [['DefensePair1-R', 'Klefbom', 'DefensePair1-R', 'Severson']]

I created for loops for home and away and also the players within them. There are 20 per Home and Away. But it is only returning just 18.. I thought the expression is 0-18 not only return 18 so there must be something else in the script that is poorly written.

Upvotes: 1

Views: 83

Answers (1)

Vasif
Vasif

Reputation: 1413

for i in range(18):
    homeplayer = team_home[i]['position']
    awayplayer = team_away[i]['position']
    homename = team_home[i]['player']['LastName']
    awayname = team_away[i]['player']['LastName']
    my_data =[] ## HERE!

    my_data.append([homeplayer, homename, awayplayer, awayname])
print(my_data)

Bring that out of the loop..

my_data =[] ## HERE!
for i in range(18):
    homeplayer = team_home[i]['position']
    awayplayer = team_away[i]['position']
    homename = team_home[i]['player']['LastName']
    awayname = team_away[i]['player']['LastName']

    my_data.append([homeplayer, homename, awayplayer, awayname])
print(my_data)

Edit: Found another snippet, possibly an error

for i in range(2):
    team_away = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']

In this snippet, you are overwriting the team_away. Not sure if you would like that

Upvotes: 2

Related Questions