我有一个YAML文件,其内容如下:
a: 45
b: cheese
c: 7.8
我想在Python中将此信息读入变量,但是经过广泛的谷歌搜索后,我无法确定是否有可能或者必须先将其放入另一种Python类型中才能将其放入变量中? 最终,我希望使用来自a和c的值进行计算。
通常情况下,使用字典是没有问题的,就像使用yaml.load("""a: 45\nb: cheese\nc: 7.8""")
一样。如果你真的必须将它们作为实际变量放入命名空间中,可以这样做:
>>> y = yaml.load("""a: 45
... b: cheese
... c: 7.8""")
>>> globals().update(y)
>>> b
"cheese"
globals().update(yaml.load("str: 42\nsuper: hi hello"))
会对您代码中的其他部分造成破坏。允许用户定义字符串和其他内容进入您的环境也是一个主要安全问题。所以最好避免这种情况;) @user_h - a p首先,你需要在冒号后面加一个空格,以使其成为合法的yaml(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