将数据从YAML文件加载到python中的变量中

时间:2015-10-07 22:51:58

标签: python variables yaml

我有一个YAML文件,其内容如下:

a: 45
b: cheese
c: 7.8

我希望能够将这些信息读入python中的变量,但是经过大量的谷歌搜索后,我可以解决这个问题,或者我必须先把它放到另一个python类型中然后再将它放入变量?最后,我想使用a和c中的值进行计算。

3 个答案:

答案 0 :(得分:2)

通常,使用字典会因使用yaml.load("""a: 45\nb: cheese\nc: 7.8""")而导致没有错误 - 如果你真的必须将这些作为实际变量放入命名空间,你可以这样做:

>>> y = yaml.load("""a: 45
... b: cheese
... c: 7.8""")
>>> globals().update(y)
>>> b
"cheese"

但我不推荐它。

答案 1 :(得分:2)

问题在于您的信息存储方式。请参阅YAML规范。您提供的信息将以字符串形式返回。 尝试在您的信息中使用类似parser的解析器来验证它返回您希望它返回的内容。

话虽如此。要将其作为字典返回,必须将其另存为

 a: 45 
 b: cheese
 c: 7.8

如果您想将其表示为字典,则上面是要保存的正确格式。

下面是一些python代码。请注意我将信息保存到名为information.yaml

的文件中
 import yaml
 with open('information.yaml') as info:
      info_dict = yaml.load(info)

答案 2 :(得分:0)

首先,你需要冒号之后的空格才能使它成为合法的名字(wiki:searchcolon)。有关pyyaml的更多信息,请单击here

#pip install pyyaml

In [1]: text="""
   ...: a: 45
   ...: b: cheese
   ...: c: 7.8"""

In [2]: import yaml

In [3]: print yaml.load(text)
{'a': 45, 'c': 7.8, 'b': 'cheese'}

现在你很高兴去了:)

如果有人对空间问题感兴趣:

In [4]: text1="""
a:45
b:cheese
c:7.8"""

In [6]: print yaml.load(text1)
a:45 b:cheese c:7.8