python yaml.dump bad indentation

前端 未结 2 1443
眼角桃花
眼角桃花 2021-02-05 03:27

I\'m executing the following python code:

import yaml


foo = {
    \'name\': \'foo\',
    \'my_list\': [{\'foo\': \'test\', \'bar\': \'test2\'}, {\'foo\': \'tes         


        
2条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-02-05 04:05

    This ticket suggests the current implementation correctly follows the spec:

    The “-”, “?” and “:” characters used to denote block collection entries are perceived by people to be part of the indentation. This is handled on a case-by-case basis by the relevant productions.

    On the same thread, there is also this code snippet (modified to fit your example) to get the behavior you are looking for:

    import yaml
    
    class MyDumper(yaml.Dumper):
    
        def increase_indent(self, flow=False, indentless=False):
            return super(MyDumper, self).increase_indent(flow, False)
    
    foo = {
        'name': 'foo',
        'my_list': [
            {'foo': 'test', 'bar': 'test2'},
            {'foo': 'test3', 'bar': 'test4'}],
        'hello': 'world',
    }
    
    print yaml.dump(foo, Dumper=MyDumper, default_flow_style=False)
    

提交回复
热议问题