我有一个问题,把两个脚本结合在一起。我试过把writer.writerow
放在几个不同的地方,但我已经没有主意了。从输出中可以看出,它循环最后一个循环,重复前两个循环,直到第三个循环完成,然后移到第二个循环。谢谢你看!你知道吗
import csv
import requests
import os
outfile = open("NHL_Home_Skater.csv","a",newline='')
writer = csv.writer(outfile)
writer.writerow(["Date","Player","PlayerId","Pos","TM","Opp","GameId","GP","G","A","Points","Shots","Spctg","PPG","PPP","SHG","SHP","TOI","Shifts","PIM","Player","GameId","BS","Give Aways","Take Aways","Missed Shots","Player","GameId","EvTOI","PpTOI","ShTOI"])
req = requests.get('http://www.nhl.com/stats/rest/skaters?isAggregate=false&reportType=basic&isGame=true&reportName=skatersummary&sort=[{%22property%22:%22playerName%22,%22direction%22:%22ASC%22}]&factCayenneExp=gamesPlayed%3E=1&cayenneExp=gameDate%3E=%222017-10-04%22%20and%20gameDate%3C=%222017-12-31%22%20and%20gameTypeId=2%20and%20gameLocationCode=%22H%22')
data = req.json()['data']
for item in data:
Player = item['playerName']
date = item['gameDate']
Pos = item['playerPositionCode']
TM = item['teamAbbrev']
Opp = item['opponentTeamAbbrev']
GameId = item['gameId']
GP = item['gamesPlayed']
G = item['goals']
A = item['assists']
Shots = item['shots']
PIM = item['penaltyMinutes']
PlayerId = item['playerId']
Points = item['points']
PPG = item['ppGoals']
PPP = item['ppPoints']
SHG = item['shGoals']
SHP = item['shPoints']
Shifts = item['shiftsPerGame']
Spctg = item['shootingPctg']
TOI = item['timeOnIcePerGame']
writer.writerow([date,Player,PlayerId,Pos,TM,Opp,GameId,GP,G,A,Points,Shots,Spctg,PPG,PPP,SHG,SHP,TOI,Shifts,PIM])
req2 = requests.get('http://www.nhl.com/stats/rest/skaters?isAggregate=false&reportType=basic&isGame=true&reportName=realtime&sort=[{%22property%22:%22playerName%22,%22direction%22:%22ASC%22}]&factCayenneExp=gamesPlayed%3E=1&cayenneExp=gameDate%3E=%222017-10-04%22%20and%20gameDate%3C=%222017-12-31%22%20and%20gameTypeId=2%20and%20gameLocationCode=%22H%22')
data2 = req2.json()['data']
for item in data2:
Player2 = item['playerName']
GameId2 = item['gameId']
BS = item['blockedShots']
GiveAways = item['giveaways']
TakeAways = item['takeaways']
MissedShots = item['missedShots']
writer.writerow([Player,GameId,BS,GiveAways,TakeAways,MissedShots])
req3 = requests.get('http://www.nhl.com/stats/rest/skaters?isAggregate=false&reportType=basic&isGame=true&reportName=timeonice&sort=[{%22property%22:%22playerName%22,%22direction%22:%22ASC%22}]&factCayenneExp=gamesPlayed%3E=1&cayenneExp=gameDate%3E=%222017-10-04%22%20and%20gameDate%3C=%222017-12-31%22%20and%20gameTypeId=2%20and%20gameLocationCode=%22H%22')
data3 = req3.json()['data']
for item in data3:
Player3 = item['playerName']
GameId3 = item['gameId']
EvTOI = item['evTimeOnIce']
PpTOI = item['ppTimeOnIce']
ShTOI = item['shTimeOnIce']
writer.writerow([Player, GameId, EvTOI, PpTOI, ShTOI])
outfile.close()
输出:
2017-10-28T23:00:00Z A.J. Greer 8478421 L COL CHI 2017020165 1 0 0 0 0 0.0 0 0 0 0 373.0 10.0 2 A.J. Greer 2017020165 0 0 1 0 A.J. Greer 2017020165 373 0 0
2017-10-28T23:00:00Z A.J. Greer 8478421 L COL CHI 2017020165 1 0 0 0 0 0.0 0 0 0 0 373.0 10.0 2 A.J. Greer 2017020165 0 0 1 0 A.J. Greer 2017020194 486 0 0
2017-10-28T23:00:00Z A.J. Greer 8478421 L COL CHI 2017020165 1 0 0 0 0 0.0 0 0 0 0 373.0 10.0 2 A.J. Greer 2017020165 0 0 1 0 A.J. Greer 2017020134 498 4 0
2017-10-28T23:00:00Z A.J. Greer 8478421 L COL CHI 2017020165 1 0 0 0 0 0.0 0 0 0 0 373.0 10.0 2 A.J. Greer 2017020165 0 0 1 0 Aaron Ekblad 2017020190 1035 88 126
新输出:
Date Player PlayerId Pos TM Opp GameId GP G A Points Shots Spctg PPG PPP SHG SHP TOI Shifts PIM
2017-11-02T23:00:00Z A.J. Greer 8478421 L COL CAR 2017020194 1 0 1 1 0 0 0 0 0 0 486 12 0
2017-10-28T23:00:00Z A.J. Greer 8478421 L COL CHI 2017020165 1 0 0 0 0 0 0 0 0 0 373 10 2
2017-10-24T23:00:00Z A.J. Greer 8478421 L COL DAL 2017020134 1 0 0 0 2 0 0 0 0 0 502 13 0
这个问题并不难,因为它很复杂,但是因为数据量很大(将近10000行数据),加上每行大约有30多列。在阅读了您的代码之后,我相信我理解了您想要的输出:3组数据的组合。以下是我的尝试:
注意事项
相关问题 更多 >
编程相关推荐