2016-07-14 81 views
-1

我想從使用python的JSON文件收集數據。我能夠訪問幾個文本塊,但是當我到達JSON文件中的第三個對象時,我得到一個關鍵錯誤。前三行工作正常,但最後一行給我一個關鍵的錯誤。Python JSON字典關鍵錯誤

response = urllib.urlopen("http://asn.desire2learn.com/resources/D2740436.json") 
data = json.loads(response.read()) 

title = data["http://asn.desire2learn.com/resources/D2740436"]["http://purl.org/dc/elements/1.1/title"][0]["value"] 

description = data["http://asn.desire2learn.com/resources/D2740436"]["http://purl.org/dc/terms/description"][0]["value"] 

topics = data["http://asn.desire2learn.com/resources/D2740436"]["http://purl.org/gem/qualifiers/hasChild"] 

topicDesc = data["http://asn.desire2learn.com/resources/S2743916"] 

這是我使用的JSON文件。 http://s3.amazonaws.com/asnstaticd2l/data/rdf/D2742493.json我經歷了所有的大括號,無法弄清楚爲什麼我得到這個錯誤。任何人都知道我爲什麼會得到這個?

+2

嗯......鏈接到的文件不是您在代碼中引用的文件。 –

回答

0
topics = data["http://asn.desire2learn.com/resources/D2740436"]["http://purl.org/gem/qualifiers/hasChild"] 

我在源文件的任何位置都看不到這個關鍵字「http://asn.desire2learn.com/resources/D2740436」。你不包括你的籌碼,但我首先想到的是筆誤造成了不好的鍵,就可以得到這樣的錯誤:

KeyError: "http://asn.desire2learn.com/resources/D2740436" 

這意味着該值在數據不存在你引用

0

您的代碼和AWS鏈接中的鏈接會轉到非常不同的文件。在網絡瀏覽器中打開the link in your code,您會發現它比AWS上的文件短得多。它實際上並不包含您要查找的密鑰。

+0

哦,我的上帝,這是如此的no。。我得到這些文件的網站是一團糟,有3個不同的文件。我解決了這個問題,非常感謝每個人。 –

0

你說你正在使用鏈接文件,其中密鑰"http://asn.desire2learn.com/resources/S2743916"變成了一次。

但是,您的代碼正在下載不同的文件 - 其中沒有出現密鑰的文件。

嘗試使用您在代碼中鏈接的文件,並且您應該看到該密鑰會起作用。