我想从以下yaml文件中仅打印a的值
1w:
team1:
contact: team1@email.com
2w:
team2:
contact: team2@email.com
到目前为止,我的工作如下:
#!/usr/bin/env python
import yaml
def yaml_loader(filepath):
with open(filepath, 'r') as file_descriptor:
#add condition to validate yaml
data = yaml.load(file_descriptor)
return data
def yaml_dump(filepath, data):
with open(filepath, w) as file_descriptor:
yaml.dump(data, file_descriptor)
if __name__ == "__main__":
filepath = "log/log_registration.yaml"
data = yaml_loader(filepath)
items = data.get('3w')
for item_roletype, value in items.iteritems():
print value
编辑帖子是因为我意识到我的Yaml应该具有不同的布局,以避免多个条目被覆盖。
在这一点上,我不确定如何仅打印“ team1”和“ team2”的名称以及其他名称。没有联系信息。
上面的代码目前无法使用...
答案 0 :(得分:1)
新的Yaml数据
1w:
team1:
contact: team1@email.com
2w:
team2:
contact: team2@email.com
好的,所以我们可以用data = yaml_loader(filepath)
看一下data
:
{'1w': {'team1': {'contact': 'team1@email.com'}},
'2w': {'team2': {'contact': 'team2@email.com'}}}
我们可以像这样提取数据
for week, teams in data.items():
for team in teams.keys():
print('{}: {}'.format(key, team))
输出:
1w: team1
2w: team2
原始答案:我认为您在处理复杂的事情上有些
数据:
1w:
a: team1
b: team1@email.com
2w:
a: team2
b: team2@email.com
代码:
data = yaml_loader(filepath)
for key, value in data.items():
print('{}[a] = {}'.format(key, value['a']))
输出(连同您的数据)
1w[a] = team1
2w[a] = team2
答案 1 :(得分:0)
if __name__ == "__main__":
filepath = "log/log_registration.yaml"
data = yaml_loader(filepath)
for _, value in data.iteritems():
for key, _ in value.iteritems():
print(key)
答案 2 :(得分:0)
我不确定您要寻找什么输出。 yaml文件中没有像“ 3w”这样的键
如果需要的输出是这样的:
a:小组2
b:team2@email.com
然后您的代码段应类似于:
items = data.get('2w')
for item_roletype, value in items.iteritems():
print "%s: %s" % (item_roletype, value)