首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python -通过变量从json文件中提取特定的键/值

python -通过变量从json文件中提取特定的键/值
EN

Stack Overflow用户
提问于 2013-08-05 00:47:55
回答 3查看 14.3K关注 0票数 2

对python和json有点陌生。我有这个json文件:

代码语言:javascript
复制
{ "hosts":  {
             "example1.lab.com" : ["mysql", "apache"],
             "example2.lab.com" : ["sqlite", "nmap"],
             "example3.lab.com" : ["vim", "bind9"]
             }
}

我想要做的是使用hostname变量并提取每个主机名的值。这有点难解释,但我使用的是saltstack,它已经遍历了主机,我希望它能够使用hostname变量从json文件中提取每个主机的值。

希望我能理解。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-08-05 02:27:09

你可以按照下面的思路做一些事情:

代码语言:javascript
复制
import json

j='''{ "hosts":  {
             "example1.lab.com" : ["mysql", "apache"],
             "example2.lab.com" : ["sqlite", "nmap"],
             "example3.lab.com" : ["vim", "bind9"]
             }
}'''

specific_key='example2'

found=False
for key,di in json.loads(j).iteritems():    # items on Py 3k
    for k,v in di.items():
        if k.startswith(specific_key):
            found=True
            print k,v
            break
    if found:
        break 

或者,您可以这样做:

代码语言:javascript
复制
def pairs(args):
    for arg in args:
        if arg[0].startswith(specific_key):
            k,v=arg
            print k,v

json.loads(j,object_pairs_hook=pairs)  

无论哪种情况,都会打印:

代码语言:javascript
复制
example2.lab.com [u'sqlite', u'nmap']
票数 4
EN

Stack Overflow用户

发布于 2013-12-08 16:46:42

如果有字符串形式的JSON,那么只需使用Python的json.loads()函数来加载JSON,解析JSON,并通过将其绑定到某个本地名称来将其内容加载到您的命名空间中

示例:

代码语言:javascript
复制
#!/bin/env python
import json
some_json = '''{ "hosts":  {
         "example1.lab.com" : ["mysql", "apache"],
         "example2.lab.com" : ["sqlite", "nmap"],
         "example3.lab.com" : ["vim", "bind9"]
         }
}'''
some_stuff = json.loads(some_json)
print some_stuff['hosts'].keys()

---> [u'example1.lab.com', u'example3.lab.com', u'example2.lab.com']

如图所示,然后访问some_stuff的内容,就像访问任何其他Python字典一样…在JSON中序列化(编码)的所有顶级变量声明/赋值都将是该字典中的键。

如果JSON内容在一个文件中,您可以像在Python中打开任何其他文件一样打开它,并将文件对象的名称传递给json.load()函数:

代码语言:javascript
复制
#!/bin/python
import json

with open("some_file.json") as f:
    some_stuff = json.load(f)

print ' '.join(some_stuff.keys())
票数 1
EN

Stack Overflow用户

发布于 2021-01-16 03:18:26

如果上面的json文件存储为'samplefile.json',您可以用python编写以下代码:

代码语言:javascript
复制
import json
f = open('samplefile.json')
data = json.load(f)

value1 = data['hosts']['example1.lab.com']
value2 = data['hosts']['example2.lab.com']
value3 = data['hosts']['example3.lab.com']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18045213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档