用python将yaml解析成一个列表

2024-10-03 09:18:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我被要求在一个项目中使用YAML。我有一个YAML文件,用来填充Python程序中与数据交互的列表。

我的数据如下:

Employees:
    custid: 200
    user: Ash
        - Smith
        - Cox

我需要python代码来遍历这个YAML文件并填充如下列表:

list_of_Employees = ['Ash', 'Smith' 'Cox']

我知道我必须打开这个文件,然后将数据存储在一个变量中,但是我不知道如何在列表中分别输入每个元素。理想情况下,我希望使用append函数,这样就不必每次都确定“用户”的大小。


Tags: 文件of数据项目代码程序yaml列表
2条回答
with open("employees.yaml", 'r') as stream:
    out = yaml.load(stream)
    print out['Employees']['user']

应该已经提供了用户列表。还要注意,您的yaml在用户节点后面缺少一个破折号

YAML序列被转换为python列表(至少在使用PyYAMLruamel.yaml时),因此您不必自己附加任何内容。

在PyYAML和ruamel.yaml中,要么将文件/流交给load()例程,要么将字符串交给它。两者:

import ruamel.yaml

with open('input.yaml') as fp:
    data = ruamel.yaml.load(fp)

以及

import ruamel.yaml

with open('input.yaml') as fp:
    str_data = fp.read()
data = ruamel.yaml.load(str_data)

做同样的事。

假设您将输入更正为:

Employees:
    custid: 200
    user:
    - Ash
    - Smith
    - Cox

您可以打印数据:

{'Employees': {'custid': 200, 'user': ['Ash', 'Smith', 'Cox']}}

并确保列表已经存在,并且可以通过正常的dict查找来访问:data['Employees']['user']

相关问题 更多 >