#python #json
Вопрос:
https://www.goalserve.com/getfeed/2633a3fcbb2b4558740708d89fcf1b20/football/nfl-standings
я посмотрел пару видео об извлечении объектов json с помощью python, но мне не удалось найти ни одного с объектами внутри объектов.
import pandas as pd
import random
import numpy as np
import requests
import json
#%%
response = requests.get("https://www.goalserve.com/getfeed/2633a3fcbb2b4558740708d89fcf1b20/football/nfl-standings?json=1")
output = response.json()
# Extract specific node content.
data = output['standings']['category']['league']
# print(output['standings']['category']['league'])
#print(type(data))
#for team in range(len(data)):
# print(team['division'])
# Dump data as string
data = json.dumps(output, indent=4)
print(data)
for team in data['division']['team']:
print(team)
я получаю эту ошибку «строковые индексы должны быть целыми числами». Как я могу получить доступ к атрибутам для каждой записи команды?
Комментарии:
1. обновление: печать(тип(вывод)) # Извлеките содержимое определенного узла. данные = вывод[«турнирная таблица»] [«категория»][«лига»] # печать(вывод[«турнирная таблица»] [«категория»][«лига»]) печать(тип(данные)) #печать(тип(данные)) печать(данные[0] [«подразделение»] [0] [«команда»] [0] [«имя»]), при этом отображается название команды
Ответ №1:
Привет, Согласно вашему коду, я вижу один недостаток, который заключается в том, что нет проверки.
сделайте эти две проверки после этого, обработайте запрос
if response.status_code==200
if response and response.text
после проверки вы можете передать ответ для обработки данных.
Ответ №2:
Здесь есть пара проблем. Во-первых, эта строка:
data = json.dumps(output, indent=4)
преобразует структуру данных в data
переменной обратно в строку, поэтому вы не можете рассматривать ее как словарь.
Вторая проблема заключается в том, что структура данных здесь представляет собой смесь словарей и списков, поэтому вам нужно рассматривать data
список лиг как список, а не словарь. То же самое относится league['division']
и division['team']
к и.
Вот версия, в которой печатаются названия команд:
import pandas as pd
import random
import numpy as np
import requests
import json
response = requests.get("https://www.goalserve.com/getfeed/2633a3fcbb2b4558740708d89fcf1b20/football/nfl-standings?json=1")
output = response.json()
data = output['standings']['category']['league']
for league in data:
for division in league['division']:
for team in division['team']:
print(team['name'])