【发布时间】:2019-01-10 11:52:23
【问题描述】:
我正在尝试重组我已经存在/工作的代码。 在第二个 for 循环内进行更改。 为什么在更改我的代码时会出现错误:
import numpy as np
import pandas as pd
import requests
import json
from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder
games_played = []
stats_for_games = []
for game_id in range(2017020001, 2017020010, 1):
url = 'https://statsapi.web.nhl.com/api/v1/game/{}/boxscore'.format(game_id)
r_2017 = requests.get(url)
game_data_2017 = r_2017.json()
for homeaway in ['home','away']:
game_dict_2017 = game_data_2017.get('teams').get(homeaway).get('teamStats').get('teamSkaterStats')
game_dict_2017['team'] = game_data_2017.get('teams').get(homeaway).get('team').get('name')
game_dict_2017['homeaway'] = homeaway
game_dict_2017['game_id'] = game_id
games_played.append(game_dict_2017)
print(games_played)
到这里:
import numpy as np
import pandas as pd
import requests
import json
from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder
games_played = []
stats_for_games = []
for game_id in range(2017020001, 2017020010, 1):
url = 'https://statsapi.web.nhl.com/api/v1/game/{}/boxscore'.format(game_id)
r_2017 = requests.get(url)
game_data_2017 = r_2017.json()
for homeaway in ['home','away']:
game_dict_2017 = game_data_2017.get('teams').get(homeaway).get('team').get('name')
game_dict_2017['homeaway'] = homeaway
game_dict_2017['game_id'] = game_id
games_played.append(game_dict_2017)
print(games_played)
运行时报错TypeError: 'str' object does not support item assignment
出现在
game_dict_2017['homeaway'] = homeaway
JSON 数据示例
{
copyright: "NHL and the NHL Shield are registered trademarks of the
National Hockey League. NHL and NHL team marks are the property of the
NHL and its teams. © NHL 2019. All Rights Reserved.",
teams: {
away: {
team: {
id: 9,
name: "Ottawa Senators",
link: "/api/v1/teams/9"
},
teamStats: {
teamSkaterStats: {
goals: 0,
pim: 0,
shots: 0,
}
}
【问题讨论】:
-
-
JSON 数据是嵌套字典,这就是我使用该方法的原因。以前工作过
-
您能否添加您尝试使用的数据样本?我认为您只是错误地将
game_dict_2017覆盖为game_dict_2017 = game_data_2017.get('teams').get(homeaway).get('team').get('name')中的字符串,然后尝试像分配之前一样使用game_data_2017。 -
你能解释一下你到底想重组什么吗?
标签: python loops web-scraping