Ank*_*mar 6 python yaml python-3.x
我有一个YAML文件(仅作为示例):
a:
b: 1
a:
b: 2
c: 1
a:
b: 3
Run Code Online (Sandbox Code Playgroud)
我想读取此文件,并使用b
s和c
s 做一些事情。问题在于我不能使用字典来读取这个文件yaml.load()
,因为它只会给我{'a':{'b': 3 }}
。相反,我想将其作为字典列表来阅读,即,我希望输出为:
[
{'a':{'b': 1 }},
{'a':{'b': 2, 'c': 1 }},
{'a':{'b': 3 }}
]
Run Code Online (Sandbox Code Playgroud)
我该如何实现?谢谢...
最新的 YAML 规范(1.2,从 2009 年开始)非常明确地表明映射中的键不能重复:
映射节点的内容是一组无序的键:值节点对,但每个键都是唯一的。
如所呈现的,您的文件不是有效的 YAML 文件,加载它应该会为您提供一个DuplicateKeyError
.
既然您知道自己想要什么,那么查看 YAML 会加载什么的最简单方法就是转储数据结构:
import sys
import ruamel.yaml
yaml = ruamel.yaml.YAML()
data = [
{'a':{'b': 1 }},
{'a':{'b': 2, 'c': 1 }},
{'a':{'b': 3 }}
]
yaml.dump(data, sys.stdout)
Run Code Online (Sandbox Code Playgroud)
这使:
- a:
b: 1
- a:
b: 2
c: 1
- a:
b: 3
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
75 次 |
最近记录: |