简体   繁体   English

如何解决 python 密钥错误

[英]How to resolve python keyerror

I practice python json.我练习 python json。 But I have some problem my code.但是我的代码有一些问题。

It's Traceback (most recent call last): File "C:\Users\�ڵ���\AppData\Local\Temp\atom_script_tempfiles\f495f790-8c51-11ea-a439-1ba828893305", line 45, in num = len(movieIdData["movieListResult"]["movieList"]) KeyError: 'movieListResult'这是 Traceback(最近一次调用最后一次):文件“C:\Users\... ["movieListResult"]["movieList"]) KeyError: 'movieListResult'

How to resolve this error?如何解决此错误?

from urllib.request import urlopen
import json
import pandas as pd

movieIdListURL = 
"http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json? 
key=430156241533f1d058c603178cc3ca0e&targetDt=20120101&openStartDt=2020&itemPerPage=20"

movieIdPage = urlopen(movieIdListURL)
movieIdData = json.loads(movieIdPage.read())

movieIDDF = pd.DataFrame()
movieIDDF = movieIDDF.append(
{"movieCd":"","movieNm":"","movieNmEn":"","openDt":"","peopleNm":""},
ignore_index= True)



num = len(movieIdData["movieListResult"]["movieList"])
print (num)
for i in range(0,num):
    movieIDDF.ix[i,"movieCd"] = movieIdData["movieListResult"]["movieList"][i]["movieCd"]
    movieIDDF.ix[i,"movieNm"] = movieIdData["movieListResult"]["movieList"][i]["movieNm"]
    movieIDDF.ix[i,"movieNmEn"] = movieIdData["movieListResult"]["movieList"][i]["movieNmEn"]
    movieIDDF.ix[i,"openDt"] = movieIdData["movieListResult"]["movieList"][i]["openDt"]
    if movieIdData["movieListResult"]["movieList"][i]["directors"] != []:
        movieIDDF.ix[i,"peopleNm"] = movieIdData["movieListResult"]["movieList"][i]["directors"][0]["peopleNm"]
    else:
        movieIDDF.ix[i,"peopleNm"] = ""

Apparently, your dataframe does not have a key 'movieListResult'.显然,您的 dataframe 没有键“movieListResult”。 Try logging the keys of movieIdData (by for example print(movieIdData.keys()) and check which keys are in there.尝试记录 movieIdData 的键(例如通过 print(movieIdData.keys()) 并检查其中有哪些键。

You can try to check if movieListResult in the movieIdData dict keys before calling it您可以在调用movieIdData dict键之前尝试检查movieListResult是否

if "movieListResult" in movieIdData:
    num = len(movieIdData["movieListResult"]["movieList"])
    print (num)
    for i in range(0,num):
        movieIDDF.ix[i,"movieCd"] = movieIdData["movieListResult"]["movieList"][i]["movieCd"]
        movieIDDF.ix[i,"movieNm"] = movieIdData["movieListResult"]["movieList"][i]["movieNm"]
        movieIDDF.ix[i,"movieNmEn"] = movieIdData["movieListResult"]["movieList"][i]["movieNmEn"]
        movieIDDF.ix[i,"openDt"] = movieIdData["movieListResult"]["movieList"][i]["openDt"]
        if movieIdData["movieListResult"]["movieList"][i]["directors"] != []:
            movieIDDF.ix[i,"peopleNm"] = movieIdData["movieListResult"]["movieList"][i]["directors"][0]["peopleNm"]
        else:
            movieIDDF.ix[i,"peopleNm"] = ""

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM