Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将yaml解析为列表_Python_List_Yaml_Pyyaml - Fatal编程技术网

在python中将yaml解析为列表

在python中将yaml解析为列表,python,list,yaml,pyyaml,Python,List,Yaml,Pyyaml,我被要求在项目中使用YAML。我有一个YAML文件,我用它来填充Python程序中的列表,该程序与数据交互 我的数据如下所示: Employees: custid: 200 user: Ash - Smith - Cox list_of_Employees = ['Ash', 'Smith' 'Cox'] 我需要python代码来迭代这个YAML文件并填充如下列表: Employees: custid: 200 user: As

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

我的数据如下所示:

Employees:
    custid: 200
    user: Ash
        - Smith
        - Cox
list_of_Employees = ['Ash', 'Smith' 'Cox']
我需要python代码来迭代这个YAML文件并填充如下列表:

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

with open("employees.yaml", 'r') as stream:
    out = yaml.load(stream)
    print out['Employees']['user']

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

yaml序列会为您转换为python列表(至少在使用or时是这样),因此您不必自己附加任何内容

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

import ruamel.yaml

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

做同样的事情

假设您将输入更正为:

Employees:
    custid: 200
    user:
    - Ash
    - Smith
    - Cox
您可以打印数据:

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

并查看该列表已经存在并且可以通过正常的dict查找访问:
数据['Employees']['user']

可能是重复的谢谢,缺少破折号导致了问题