2016-11-29 46 views
0

我无法理解使用python进行yaml解析的特殊行为。 我YAML文件Yaml行为 - 用python解析

- mappings: 
     xyz: 
     family: app 
     image: mine-2-455-1 
     containerName: image-1 
     containerPort: 9020 
     appenv: dev 
     label: cds-containers 
     count: 2 

代码

config = open(confFile) 
    confParser = yaml.load(config) 
    taskFamily = str(confParser[2]['mappings']['xyz']['family']) 
    print taskFamily 
    imageName = str(confParser[2]['mappings']['xyz']['image']) 
    print imageName 
    containerName = str(confParser[2]['mappings']['xyz']['containerName']), 
    print containerName 

YAML的是有类似值的相当大的。这个问题是在输出,

xyz 
mine-2-455-1 
('image-1',) 

不知何故,它认为我的“容器名称”值是一个元组,我不能这样传递给ECS博托,因为它预计字符串,而不是元组。想知道为什么会发生这种情况以及如何纠正。

我从safeload切换到yaml加载,但似乎没有任何效果。请输入任何内容。

回答

5

在这条线的逗号导致它被作为一个元组处理:

containerName = str(confParser[2]['mappings']['xyz']['containerName']), 

解决办法是删除尾随逗号。

+0

砰!在目标上......这完全是出乎意料的。万分感谢 –