gpt4 book ai didi

python - 将 YAML 文件转换为 python dict

转载 作者:IT老高 更新时间:2023-10-28 22:12:20 29 4
gpt4 key购买 nike

我在将 YAML 文件中的文档映射到 dict 并正确映射它们时遇到以下问题。

我有以下 YAML 文件,它代表一个服务器 (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 文件,我可以毫无问题地这样做,我想我明白了。

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,如果 instanceIdgetInstanceId() 设置的匹配,则打印出该文档的所有键和值.

如果我从命令行查看 map 数据结构,我会得到:

{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}

我想我可能不正确地为 YAML 文件创建数据结构,并且在匹配 dict 上的内容时,我有点迷失了。

旁注:我无法使用 yaml.load() 加载此文件中的所有文档,我尝试了 yaml.load_all(),这似乎可行,但我的主要问题仍然存在。

最佳答案

我认为您的 yaml 文件应该看起来像(或至少类似,所以它的结构是正确的):

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'}}

你可以从那里去......


所以像这样使用:

>>> 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

关于python - 将 YAML 文件转换为 python dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019653/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com