Рассмотрим следующий файл:
- k0: v0
vars: &splat0
VAR0: potato # vars from blob0
- k1: v1
vars: &splat1
VAR1: spud # vars from blob1
- k: v
extra: # merged vars from blob0 + blob1
<<: *splat0
<<: *splat1
Он использует функции ключа слияния YAML.
Это действительный файл YAML? Спецификация (1.1, 1.2) говорит, что в узле сопоставления существует "ограничение, что каждый из ключей уникален", однако это неясно должен ли сам ключ слияния подвергаться ограничению уникальности, или только ключи сопоставления после разрешенного слияния должны быть уникальными.
PyYAML анализирует это и объединяет ключи, но комментарии теряются. ruamel может сохранять комментарии, но вызывает DuplicateKeyError
, и если вы явно разрешаете повторяющиеся ключи, он выполняет синтаксический анализ, но слияние теряется.
Действителен ли этот ввод в формате YAML и как его правильно проанализировать в Python?
In this case the duplicate key happens to be a merge key <<:.
очень похоже на ваш случай. - person sanyassh   schedule 14.02.2020