“Dict”对象没有属性“loads”错误

2024-09-30 08:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检索flucs中包含的最后两条数据。在本例中,我想检索[5.68]和[5.74]。首先,如何仅附加最后两条数据。其次,如何删除数据前面的时间戳。下面的代码产生一个错误。我已经导入了json模块,所以这不是问题

我的代码:

request2 = requests.get('https://www.punters.com.au/api/web/public/Odds/getOddsComparisonCacheable/?allowGet=true&APIKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&eventId=1044547&betType=FixedWin', headers={'User-Agent': 'Mozilla/5.0'}
json2 = request2.json()
for selection in json2['selections']:
    for price in selection['prices']:
        for fluc in selection['flucs']:
            nlists = json.loads(fluc)
            print(nlists[-2][1])
            print(nlists[-1][1])
AttributeError: 'dict' object has no attribute 'loads'

JSON:

"selections":[
   {
      "name":"Bolt From The Blue",
      "selectionId":"10242042",
      "competitorId":"655610",
      "result":"3",
      "resultOrdinal":"3rd",
      "flucsKey":"10242042-Average-FixedWin",
      "bestOdds":6,
      "bestOddsBookie":"Bet365",
      "flucs":"[[1597723530,8],[1597724074,7.7],[1597724665,7.55],[1597725240,7.83],[1597725495,7.85],[1597781362,5.66],[1597781902,4.87],[1597782326,4.75],[1597789022,4.65],[1597790084,4.62],[1597790149,4.61],[1597790624,4.6],[1597794675,4.54],[1597794891,4.52],[1597797663,4.53],[1597797695,4.56],[1597797719,4.58],[1597798687,4.6],[1597799682,4.65],[1597799691,4.66],[1597799695,4.68],[1597799705,4.69],[1597799728,4.7],[1597799743,4.68],[1597799752,4.7],[1597799771,4.69],[1597799797,4.71],[1597799938,4.72],[1597799965,4.73],[1597799996,4.75],[1597800021,4.77],[1597800030,4.78],[1597800050,4.77],[1597800074,4.78],[1597800079,4.79],[1597800084,4.8],[1597800094,4.81],[1597800099,4.82],[1597800111,4.83],[1597800115,4.85],[1597800124,4.86],[1597800129,4.87],[1597800147,4.91],[1597800152,4.97],[1597800161,5.02],[1597800166,5.06],[1597800171,5.25],[1597800180,5.3],[1597800185,5.34],[1597800190,5.39],[1597800196,5.43],[1597800200,5.56],[1597800210,5.6],[1597800215,5.64],[1597800220,5.66],[1597800229,5.68],[1597800239,5.63],[1597800257,5.68],[1597800272,5.63],[1597800285,5.68],[1597800290,5.69],[1597800368,5.68],[1597800508,5.74]]

Tags: 数据代码injsonforprintloadsselection
1条回答
网友
1楼 · 发布于 2024-09-30 08:21:54

问题是selection["flucs"]不返回列表,而是返回str,因此需要转换为实际列表

此外,您试图将其作为json加载,这两种方式都无效

尝试以下方法检查数据并找出需要提取的内容:

endpoint_url = "YOUR_URL"
request2 = requests.get(endpoint_url,
                    headers={'User-Agent': 'Mozilla/5.0'})
json2 = request2.json()
for selection in json2['selections']:
    for price in selection['prices']:
        for fluc in eval(selection['flucs']):
            print(fluc)

相关问题 更多 >

    热门问题