【发布时间】:2016-01-05 08:46:03
【问题描述】:
我有一个 YAML 文件,其内容如下:
a: 45
b: cheese
c: 7.8
我希望能够将这些信息读入 python 中的变量,但经过广泛的谷歌搜索后,我无法确定这是否可行,或者我必须先将其放入另一种 python 类型,然后才能放入变量中?最终我想使用 a 和 c 中的值进行计算。
【问题讨论】:
我有一个 YAML 文件,其内容如下:
a: 45
b: cheese
c: 7.8
我希望能够将这些信息读入 python 中的变量,但经过广泛的谷歌搜索后,我无法确定这是否可行,或者我必须先将其放入另一种 python 类型,然后才能放入变量中?最终我想使用 a 和 c 中的值进行计算。
【问题讨论】:
【讨论】:
首先,您需要在冒号后面留一个空格以使其成为合法的 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
【讨论】:
一般来说,使用字典并没有什么问题,就像使用 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