Converting YAML file to python dict(将 YAML 文件转换为 python dict)
问题描述
我在将 YAML 文件中的文档映射到 dict 并正确映射它们时遇到以下问题.
I am having the following problem of mapping documents within a YAML file to a dict and properly mapping them.
我有以下 YAML 文件,它代表一个服务器 (db.yml):
I have the following YAML file, which represents a server (db.yml):
instanceId: i-aaaaaaaa
     environment:us-east
     serverId:someServer
     awsHostname:ip-someip
     serverName:somewebsite.com
     ipAddr:192.168.0.1
     roles:[webserver,php]
我加载了这个 YAML 文件,我可以毫无问题地这样做,我想我明白了.
I load this YAML file, which I can do without any problems, I think I understand that.
instanceId = getInstanceId()
stream = file('db.yml', 'r')
dict = yaml.load_all(stream)
for key in dict:
    if key in dict == "instanceId":
        print key, dict[key]
我希望逻辑如下所示:
- 加载yaml,映射到dict
- 查看文档中的每个 dict,如果 instanceId与getInstanceId()设置的匹配,则打印出该文档的所有键和值.
- load yaml, map to dict
- look in every dict in the document, if the instanceIdmatches that which was set bygetInstanceId(), then print out all of the keys and values for that document.
如果我从命令行查看地图数据结构,我会得到:
If I look at the map data structure from the command line, I get:
{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}
我想我可能不正确地为 YAML 文件创建数据结构,并且在匹配 dict 上的内容时,我有点迷失了.
I think I might be creating the data structure for the YAML file improperly, and on matching the contents on the dict, I am a bit lost.
旁注:我无法使用 yaml.load() 加载此文件中的所有文档,我尝试了 yaml.load_all(),这似乎可行,但我的主要问题仍然存在.
Side note: I cannot load all of the documents in this file using yaml.load(), I tried yaml.load_all(), which seems to work but my main issue still exists.
推荐答案
我认为你的 yaml 文件应该看起来像(或者至少是类似的,所以它的结构是正确的):
I think your yaml file should look like (or at least something like, so it's structured correctly anyway):
instance:
     Id: i-aaaaaaaa
     environment: us-east
     serverId: someServer
     awsHostname: ip-someip
     serverName: somewebsite.com
     ipAddr: 192.168.0.1
     roles: [webserver,php]
然后,yaml.load(...) 返回:
{'instance': {'environment': 'us-east', 'roles': ['webserver', 'php'], 'awsHostname': 'ip-someip', 'serverName': 'somewebsite.com', 'ipAddr': '192.168.0.1', 'serverId': 'someServer', 'Id': 'i-aaaaaaaa'}}
你可以从那里去......
And you can go from there...
所以像这样使用:
>>> for key, value in yaml.load(open('test.txt'))['instance'].iteritems():
    print key, value
environment us-east
roles ['webserver', 'php']
awsHostname ip-someip
serverName somewebsite.com
ipAddr 192.168.0.1
serverId someServer
Id i-aaaaaaaa
这篇关于将 YAML 文件转换为 python dict的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 YAML 文件转换为 python dict
 
				
         
 
            
        基础教程推荐
- 包装空间模型 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 求两个直方图的卷积 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
				 
				 
				 
				