【发布时间】:2021-09-22 22:35:33
【问题描述】:
我知道这不是严格有效的 YAML,但我想知道如何修改我的 pyyaml 解析器以将与重复键关联的值分组到一个列表中。
所以,我有以下内容:
import yaml
from io import StringIO
data = """
NAME: Best Test
TEST: True
More: Yes
NO_LEADING_ZEROS: 0713
ENTITY:
Name: Great
Value: 10
ENTITY:
Name: Even better
Value: 11
"""
with StringIO(data) as f:
parsed = yaml.load(f.read(), Loader=yaml.BaseLoader)
print(parsed)
assert(isinstance(parsed.get("ENTITY"), list))
我得到以下信息:
{'NAME': 'Best Test',
'TEST': 'True',
'ENTITY': {'Name': 'Even better', 'Value': '11'},
'More': 'Yes',
'NO_LEADING_ZEROS': '0713'}
假设我不能更改“yaml”,只能更改我的解析器,我会更改什么来获取以下字典?
{'NAME': 'Best Test',
'TEST': 'True',
'ENTITY': [
{'Name': 'Great', 'Value': '10'}
{'Name': 'Even better', 'Value': '11'}],
'More': 'Yes',
'NO_LEADING_ZEROS': '0713'}
我看到这个答案看起来很相似Getting duplicate keys in YAML using Python
但是该解决方案不适用于我的用例,因为它只是将每个字段都放入一个列表中,然后返回:
{'NAME': ['Best Test'],
'TEST': [True],
'ENTITY': [defaultdict(<class 'list'>,
{'Name': ['Great'], 'Value': [10]}),
defaultdict(<class 'list'>,
{'Name': ['Even better'], 'Value': [11]})],
'More': [True],
'NO_LEADING_ZEROS': [459]})
【问题讨论】:
标签: python parsing yaml pyyaml