Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用返回的.json()对象作为第二个.json()对象的.format()语句的一部分_Python_Json_Python Requests - Fatal编程技术网

Python 使用返回的.json()对象作为第二个.json()对象的.format()语句的一部分

Python 使用返回的.json()对象作为第二个.json()对象的.format()语句的一部分,python,json,python-requests,Python,Json,Python Requests,我正在使用for循环提交一系列xhr请求以更改其参数,如下所示: import json import requests import jsonobject for i in range(0, 1): #set to 1 rather than three to making demonstration easier if i == 0: var = "0" var2 = "Home" elif i == 1: var = "1

我正在使用for循环提交一系列xhr请求以更改其参数,如下所示:

import json
import requests
import jsonobject

for i in range(0, 1): #set to 1 rather than three to making demonstration easier

    if i == 0:
        var = "0"
        var2 = "Home"
    elif i == 1:
        var = "1"
        var2 = "Away"
    elif i == 2:
        var = "2"
        var2 = "Overall"

    url = 'http://www.whoscored.com/StatisticsFeed/1/GetPlayerStatistics'
    params = {
            'category': 'tackles',
            'subcategory': 'success',
            'statsAccumulationType': '0',
            'isCurrent': 'true',
            'playerId': '',
            'teamIds': '',
            'matchId': '',
            'stageId': '9155',
            'tournamentOptions': '2',
            'sortBy': 'Rating',
            'sortAscending': '',
            'age': '',
            'ageComparisonType': '',
            'appearances': '',
            'appearancesComparisonType': '0',
            'field': var2, #parameter from for loop
            'nationality': '',
            'positionOptions': "'FW','AML','AMC','AMR','ML','MC','MR','DMC','DL','DC','DR','GK','Sub'",
            'timeOfTheGameEnd': '5',
            'timeOfTheGameStart': '0',
            'isMinApp': '',
            'page': '1',
            'includeZeroValues': '',
            'numberOfPlayersToPick': '1'
            }

    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
           'X-Requested-With': 'XMLHttpRequest',
           'Host': 'www.whoscored.com',
           'Referer': 'http://www.whoscored.com/'}

    responser = requests.get(url, params=params, headers=headers)
    responser = responser.json()
    print "responser = ",responser #contents of .json() object

    playerTableStats = responser[u'playerTableStats'] #json sub object to be parsed
    statColumns = responser[u'statColumns'][3:] #json sub object to pass to .format() statement
    statColumns = ''.join('{' + x + '}' for x in statColumns)
    print "statColumns = ",statColumns

    for statDict in playerTableStats:

        var = (statColumns.format(**statDict)) #statColumns object passed to .format() statement
        print "var = ",var
对于每个responer.json()对象,都有两个嵌套组件。第一个,
statColumns
可以作为.format()语句的一部分来映射第二个,名为
playerTableStats
。因此,您可以看到此代码正在执行的操作,下面是打印的输出:

responser =  {u'statColumns': [u'apps', u'subOn', u'minsPlayed', u'tackleWonTotal', 
u'challengeLost', u'tackleTotalAttempted'], u'paging': {u'firstRecordIndex': 1, u'resultsPerPage': 1,
 u'lastRecordIndex': 1, u'totalPages': 431, u'currentPage': 1, u'totalResults': 431}, 
u'playerTableStats': [{u'positionText': u'Defender', u'rating': 8.37, u'weight': 77, u'playerId':
 22079, u'height': 188, u'teamId': 32, u'playedPositions': u'-DC-', u'challengeLost': 0.0, 
u'isManOfTheMatch': False, u'isOpta': True, u'subOn': 0, u'tackleWonTotal': 2.0,
 u'tournamentShortName': u'EPL', u'apps': 1, u'teamName': u'Manchester United', 
u'tournamentRegionId': 252, u'regionCode': u'gb-nir', u'tournamentRegionCode': u'gb-eng', 
u'playedPositionsShort': u'D(C)', u'seasonId': 4311, u'ranking': 1, u'minsPlayed': 90, 
u'tournamentName': u'Premier League', u'isActive': True, u'name': u'Jonny Evans', u'firstName': 
u'Jonny', u'lastName': u'Evans', u'age': 26, u'seasonName': u'2014/2015', u'tournamentId': 2, 
u'tackleTotalAttempted': 2.0}]}

statColumns =  {tackleWonTotal}{challengeLost}{tackleTotalAttempted}

var =  2.00.02.0
打印在
statColumns=
语句中的
playerTableStats
元素我希望看到打印为:

2.0,0.0,2.0
而不是:

2.00.02.0
…这是我得到的。有人能看出我做错了什么吗


谢谢

我没有仔细阅读您的代码,但在我看来您应该
。用逗号而不是空字符串连接

statColumns = ','.join('{' + x + '}' for x in statColumns)
#              ^ comma here, not empty string.

否则,您的格式语句看起来像
'{minsPlayed}{tacklewonttal}…
而不是
'{minsPlayed},{tacklewonttal},…'

如果您想要逗号,为什么要使用
'.join(…)
而不是
,'.join(…)
?@mgilson…谢谢您的回复。是的,这很有效。我不知道为什么我没有注意到我是这样加入的。我想小数点的位置让我的大脑感到困惑@gdogg371——发生在我们当中最好的人身上:-)。