亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解析 JSON 文件時獲取密鑰錯誤

解析 JSON 文件時獲取密鑰錯誤

海綿寶寶撒 2022-09-20 10:07:06
我昨天剛剛開始使用JSON文件,并且我已經搜索了與KeyError相關的其他問題,但到目前為止,沒有一個答案有所幫助。我正在嘗試解析此JSON文件并創建一個字典,使“文章”成為鍵,“視圖”成為值。但是,我只是在嘗試打印它時遇到密鑰錯誤。如果我使用不同的URL,代碼可以工作,但我需要使用這個URL。我只是打印錯了嗎?def display(url, text):    print(url)    dictionary = json.loads(text)    for item in dictionary['items']:        print(f"{item['article']}:\t\t{item['views']}")def main():    url = "https://wikimedia.org/api/rest_v1/metrics/pageviews/top/en.wikiversity/all-access/2018/01/all-days"    display(url, text)main()
查看完整描述

3 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

查看實際的 JSON 數據:


{

  "items": [

    {

      "project": "en.wikiversity",

      "access": "all-access",

      "year": "2018",

      "month": "01",

      "day": "all-days",

      "articles": [

        {

          "article": "Psycholinguistics/Models_of_Speech_Production",

          "views": 585462,

          "rank": 1

        },

        {

          "article": "Wikiversity:Main_Page",

          "views": 118971,

          "rank": 2

        },

        {

          "article": "Special:Search",

          "views": 60332,

          "rank": 3

        },

你不是在尋找,你實際上是在尋找items[n]['article|views']items[n]['articles'][n]['article|views']


def display(url, text):

    print(url)

    dictionary = json.loads(text)

    for item in dictionary['items']:

        for article in item['articles']:

            print(f"{article['article']}:\t\t{article['views']}")


查看完整回答
反對 回復 2022-09-20
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

你的代碼只有一個問題:


您正在迭代的項上沒有鍵。實際上,其中有一個文章列表。因此,如果您只是添加:article


for article in item['articles']:

它將工作(更改您的顯示方法):


def display(url, text):

    print(url)

    dictionary = json.loads(text)

    for item in dictionary['items']:

        for article in item['articles']:

            print(f"{article['article']}:\t\t{article['views']}")


查看完整回答
反對 回復 2022-09-20
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

使用像火狐瀏覽器這樣的 json 查看器來瀏覽 json。您沒有正確引用它。


首先,該頁面在項目中只有一個條目,因此迭代似乎很奇怪。


無論哪種方式,在您的for循環中,每個項目都是一個字典。有一個稱為文章的關鍵是字典列表,因此您需要一個嵌套循環。


def display(url, text):

    print(url)

    dictionary = json.loads(text)

    for item in dictionary['items']:

        for article in item['articles']:

            print(f"{article['article']}:\t\t{article['views']}")


查看完整回答
反對 回復 2022-09-20
  • 3 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號