Это не столько отступ, сколько смещение индикатора элемента последовательности. Это смещение берется в пределах пространства перед элементом, и если корневой узел является списком, это дает правильный YAML, но выглядит неоптимально.
Я пытался исправить это, но не пришелс хорошим решением. Пока я этого не сделаю, вам придется постобработать вывод, что легко сделать:
import sys
import ruamel.yaml
data = [{'item': 'Food_eat', 'Food': {'foodNo': 42536216,'type': 'fruit','moreInfo': ['organic']}}]
def strip_leading_double_space(stream):
if stream.startswith(" "):
stream = stream[2:]
return stream.replace("\n ", "\n")
# you could also do that on a line by line basis
# return "".join([s[2:] if s.startswith(" ") else s for s in stream.splitlines(True)])
yaml = ruamel.yaml.YAML()
yaml.indent(sequence=4, offset=2)
print('# < to show alignment')
yaml.dump(data, sys.stdout, transform=strip_leading_double_space)
, что дает:
# < to show alignment
- item: Food_eat
Food:
foodNo: 42536216
type: fruit
moreInfo:
- organic
Конечно, было бы более эффективно, если быдополнительные пробелы в начале строки не будут сгенерированы.