【问题标题】:Extract only values from JSON key:value pair using python仅从 JSON 键中提取值:使用 python 的值对
【发布时间】:2014-06-12 00:12:49
【问题描述】:

我已经四处搜索,但没有看到任何完全涵盖我需要做的事情,所以如果我在搜索中错过了答案,请向我推荐正确的链接,在此先感谢。简单地说,我要做的就是从我正在调用的 JSON 对象列表中获取两个值,然后从列表中的每个对象中删除两个值,而不是整个 key:value。

我现在的代码是这样的:

import json, urllib2, pprint

url = ('url_to_be_read')
urlFile = urlib2.urlopen(url)
jsonList = json.load(urlFile)

pprint (jsonList['domain']

我也尝试过这种方式:https://stackoverflow.com/a/15580120/3483414,但两种方式我都得到:“Keyerror:'domain'”

我的 JSON 对象列表示例(调用并打印后测试)如下:

 # Edited as requested
 {u'data': [{u'categories': [],
             u'ip': u'123.456.78.9',
             u'domain': u'com.somedomain',
             u'handler': 7},
            {u'categories': [],
             u'ip': u'9.876.543.21',
             u'domain': u'com.differendomain',
             u'handler': 7}],
  u'elapsedTime': 130,
  u'successful': True}

简单的要点是我只想要列表中每个对象的 IP 和域的值。在弄清楚第一部分之前,我没有费心尝试检索第二部分(IP)。感谢您的所有帮助。

【问题讨论】:

  • 您需要向我们展示 更多 加载的 JSON。您显然有一个顶级字典,并且其中至少一个值包含一个带有 more 字典的列表。顶级字典没有 domain 键,是那些嵌套字典。
  • 不要使用 urllib,而是尝试 python 请求。 docs.python-requests.org 真的很震撼 ;)
  • 我第一次使用请求,我只是在尝试不同的东西,谢谢。我还按要求更新了列表。
  • 这是真正的 json 吗?我看到一个丢失的}
  • 对不起,我修好了,列表比较长,所以我就拼接了。

标签: python json


【解决方案1】:

所以在四处搜索和更多谷歌之后,我想出的答案是:

import requests, json

r = r.requests.get('path_to_url.tld')
j = r.text
j = json.loads(j)
json_string = json.dumps(j,sort_keys=True, indents=2)
parent = j['data']
for item in parent:
    print item["domain"]
        print item["ip"]

这将为我提供我想要在我的文件中稍后使用的内容:

someDomain.com
123.4.5.6
otherDomain.net
12.34.56.78

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多