Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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_Yaml_Pyyaml - Fatal编程技术网

Python 从YAML文件返回所有列表及其内容

Python 从YAML文件返回所有列表及其内容,python,yaml,pyyaml,Python,Yaml,Pyyaml,我正在尝试为列表编写自定义yaml lint规则。但是,我不知道如何仅从文件中获取列表 例如,如果我有以下文件: 变量1.yaml: --- 清单1: -列表1值1 -列表1值2 -列表1值3 字符串1:这是一个字符串 bool1:是的 清单2: -列表2Value1 -列表2Value2 -列表2值3 变量2.yaml: --- dict1: dict1list1: - dict1list1value1 - dict1list1value2 dict1bool1: f

我正在尝试为列表编写自定义yaml lint规则。但是,我不知道如何仅从文件中获取列表

例如,如果我有以下文件:

变量1.yaml:

---
清单1:
-列表1值1
-列表1值2
-列表1值3
字符串1:这是一个字符串
bool1:是的
清单2:
-列表2Value1
-列表2Value2
-列表2值3
变量2.yaml:

---
dict1:
  dict1list1:
    - dict1list1value1
    - dict1list1value2
  dict1bool1: false
bool2: true
list3:
  - list3value1
  - list3value2
  - list3value3
list4:
  - list4value1
  - list4value2
那么我想要的是:

>>>对于名称,从\u yaml\u文件(“variable1.yaml”)获取\u列表\u中的值:
打印(名称:值)
列表1:['list1value1'、'list1value2'、'list1value3']
列表2:['list2value1'、'list2value2'、'list2value3']
>>>对于名称,get_列表中的值来自_yaml_文件(“variables2.yaml”):
打印(名称:值)
dict1list1:['dict1list1value1','dict1list1value2']
列表3:['list3value1'、'list3value2'、'list3value3']
列表4:['list4value1','list4value2']

额外的好处:声明列表的行号

加载yaml后,我们有一个python dict。我们迭代dict项并检查哪个值是列表

试试下面的方法

import yaml

with open('variables1.yaml') as f:
    data = yaml.load(f, Loader=yaml.FullLoader)
    for k, v in data.items():
        if isinstance(v, list):
            print(f'{k} --> {v}')
输出

list1 --> ['list1value1', 'list1value2', 'list1value3']
list2 --> ['list2value1', 'list2value2', 'list2value3']

到目前为止,您尝试了什么?请展示您编写的代码,因为StackOverflow不是一个代码编写服务,如果您没有表现出诚实的尝试,您可能会放弃并关闭投票。