Я пытаюсь перебрать большой JSON объект, который имеет несколько вложенных объектов. Мне нужно извлечь названия команд, время начала и оценки каждой группы в JSON. Я успешно сделал это для JSON данных, которые организованы в форме совпадения по совпадению, но я не могу сделать правильный цикл для извлечения данных, когда они разделены на группы. Что делает это трудным, так это то, что в каждой группе разное количество команд, и поэтому в каждой группе разное количество матчей.
Сам JSON: https://dtmwra1jsgyb0.cloudfront.net/stages/5e223506edae743046ecdaa1/groups/round/1
Сайт, который использует JSON: https://battlefy.com/college-league-of-legends/2020-eastern-college-athletic-conference/5e1d0496beecfa23958b37ca/stage/5e223506edae743046ecdaa1/bracket/?groupName=A
Мне нужны значения team
, score
и startTime
. Идентификатор группы не важен.
Мой код пока:
from pytz import timezone
import requests,json,sys
from teams import teams
team1, team2, score1, score2, winner, date = ([] for y in range(6))
hour, minute, month, day, year = ([] for y in range(5))
timex = []
def jloader():
link = "https://dtmwra1jsgyb0.cloudfront.net/stages/5e2fa0dda134095e8e1221f2/groups/round/1"
response = json.loads(requests.get(link).text)
x = len(response)
if "group" in link:
count = 0
inner = []
for i in range(x):
inner.append(len(response[i]['matches']))
count = count+1
matchFill(x, response, inner, count)
winnerFill(x)
rename(x)
printer(x)
def matchFill(con, response, inner, count):
#issues looping in this area
def nameFill(x, inner):
for i in range(x):
for j in range(inner[j]):
try:
team1.append(response[i]['top'][j]['name'])
except KeyError:
team1.append('')
continue
#issues looping in this area
for i in range(x, inner):
for j in inner[j]:
try:
team2.append(response[i]['bottom'][j]['name'])
except KeyError:
team2.append('')
continue
#issues looping in this area
def scoreFill(x):
for m in range(x):
for n in inner[n]:
try:
score1.append(response[m]['top'][n]['score'])
except KeyError:
score1.append('')
continue
#issues looping in this area
for m in range(x):
for n in inner[n]:
try:
score2.append(response[m]['bottom'][n]['score'])
except KeyError:
score2.append('')
continue
#issues looping in this area
def getTime(x):
for b in range(x):
try:
timex.append(datetime.strptime(response[b]['schedule']['startTime'], '%Y-%m-%dT%H:%M:%S.%fZ'))
timex[b] = (timex[b] - timedelta(hours=3))
except KeyError:
timex.append(datetime.strptime(response[b]['createdAt'], '%Y-%m-%dT%H:%M:%S.%fZ'))
timex[b] = (timex[b] - timedelta(hours=3))
for a in range(x):
date.append(timex[a].strftime("%Y-%m-%d"))
hour.append(timex[a].strftime("%H"))
minute.append(timex[a].strftime("%M"))
nameFill(con, inner)
scoreFill(con, inner)
getTime(con)
return
def winnerFill(x):
for j in range(x):
if (score1[j] > score2[j]):
winner.append('1')
elif (score2[j] > score1[j]):
winner.append('2')
else:
winner.append('')
def rename(x):
for g in range(x):
team1[g] = teams.get(str(team1[g]), team1[g])
team2[g] = teams.get(str(team2[g]), team2[g])
def printer(x):
for y in range(x):
print("{{MatchSchedule" + "|team1=" + str(team1[y]) + "|team2=" + str(team2[y]) + "|team1score=" + str(score1[y]) + "|team2score=" + str(score2[y]) + "|winner=" + str(winner[y]) + "|date=" + str(date[y]) + "|time=" + str(hour[y]) + ":" + str(minute[y]) + "|timezone=PST|dst=no|vod1=|stream=}} \n")
if __name__ == "__main__":
jloader()```