加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在JSON中到达未知值后面的字符串

发布时间:2020-12-20 11:31:26 所属栏目:Python 来源:网络整理
导读:我使用维基百科的API来获取有关页面的信息. API给了我这样的 JSON: "query":{ "pages":{ "188791":{ "pageid":188791,"ns":0,"title":"Vanitu00e9","langlinks":[ { "lang":"bg","*":"Vanitas" },{ "lang":"ca",ETC. } } }} 你可以看到the full JSON respo
我使用维基百科的API来获取有关页面的信息.
API给了我这样的 JSON:

"query":{
  "pages":{
     "188791":{
        "pageid":188791,"ns":0,"title":"Vanitu00e9","langlinks":[
           {
              "lang":"bg","*":"Vanitas"
           },{
              "lang":"ca",ETC.
        }
     }
  }
}

你可以看到the full JSON response.

我想获得所有条目,如:

{
   "lang":"ca","*":"Vanitas"
}

但是页面对象中的数字键(“188791”)是问题所在.

我发现Find a value within nested json dictionary in python解释了我如何枚举值.

不幸的是我得到以下异常:

TypeError: 'dict_values' object does not support indexing

我的代码是:

json["query"]["pages"].values()[0]["langlinks"]

这可能是一个愚蠢的问题,但我找不到传递页面id值的方法.

解决方法

只要您一次只查询一个页面,Simeon Visser’s answer就可以正常工作.但是,作为一个好的风格,我建议您构建代码,以便迭代所有返回的结果,即使您知道应该只有一个:

for page in data["query"]["pages"].values():
    title = page["title"]
    langlinks = page["langlinks"]
    # do something with langlinks...

特别是,通过这种方式编写代码,如果您发现自己需要为多个页面运行查询,则可以使用单个MediaWiki API请求高效地执行此操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读