Search code examples
pythonpretty-print

PrettyPrint indent/line break each level


PrettyPrint is great, but I came up to the following problem.

I've a structure that print like that :

{ 'table': { 'tr': [ { 'tr': { 'td': [ {'td': 'Period'},
                                       {'td': 'G-A:B '},
                                       {'td': 'SA -A:B '},
                                       {'td': 'PIM-A:B  '},
                                       {'td': 'PP-A:B '},
                                       {'td': 'SH-A:B'}]}},
                     { 'tr': { 'td': [ {'td': '1'},
                                       {'td': '2:2'},
                                       {'td': '14:10'},
                                       {'td': '4:8'},
                                       {'td': '1:1'},
                                       {'td': '0:0'}]}},
                     { 'tr': { 'td': [ {'td': '2'},
                                       {'td': '2:2'},
                                       {'td': '13:11'},
                                       {'td': '37:27'},
                                       {'td': '0:0'},
                                       {'td': '0:0'}]}},
                     { 'tr': { 'td': [ {'td': '3'},
                                       {'td': '0:1'},
                                       {'td': '11:13'},
                                       {'td': '0:8'},
                                       {'td': '0:0'},
                                       {'td': '0:0'}]}},
                     { 'tr': { 'td': [ {'td': 'TOTAL'},
                                       {'td': '4:5'},
                                       {'td': '38:34'},
                                       {'td': '41:43'},
                                       {'td': '1:1'},
                                       {'td': '0:0'}]}},
                     { 'tr': { 'td': [ {'td': '\xa0'},
                                       {'td': '\xa0'},
                                       {'td': '\xa0'},
                                       {'td': '\xa0'},
                                       {'td': '\xa0'},
                                       {'td': '\xa0'}]}}]}}

I was looking to print each level of depth on a new line (which is obviously not the case here).

Any idea how I could do it ? There does't seem to be an option for that.

PS: Using Python 3.4


Solution

  • You can also use an alternative third-party pprint++:

    A drop-in replacement for pprint that's actually pretty

    from pprintpp import pprint
    
    data = ... # your dict here
    
    pprint(data)
    

    Prints:

    {
        'table': {
            'tr': [
                {
                    'tr': {
                        'td': [
                            {'td': 'Period'},
                            {'td': 'G-A:B '},
                            {'td': 'SA -A:B '},
                            {'td': 'PIM-A:B  '},
                            {'td': 'PP-A:B '},
                            {'td': 'SH-A:B'},
                        ],
                    },
                },
                {
                    'tr': {
                        'td': [
                            {'td': '1'},
                            {'td': '2:2'},
                            {'td': '14:10'},
                            {'td': '4:8'},
                            {'td': '1:1'},
                            {'td': '0:0'},
                        ],
                    },
                },
                {
                    'tr': {
                        'td': [
                            {'td': '2'},
                            {'td': '2:2'},
                            {'td': '13:11'},
                            {'td': '37:27'},
                            {'td': '0:0'},
                            {'td': '0:0'},
                        ],
                    },
                },
                {
                    'tr': {
                        'td': [
                            {'td': '3'},
                            {'td': '0:1'},
                            {'td': '11:13'},
                            {'td': '0:8'},
                            {'td': '0:0'},
                            {'td': '0:0'},
                        ],
                    },
                },
                {
                    'tr': {
                        'td': [
                            {'td': 'TOTAL'},
                            {'td': '4:5'},
                            {'td': '38:34'},
                            {'td': '41:43'},
                            {'td': '1:1'},
                            {'td': '0:0'},
                        ],
                    },
                },
                {
                    'tr': {
                        'td': [
                            {'td': '\xa0'},
                            {'td': '\xa0'},
                            {'td': '\xa0'},
                            {'td': '\xa0'},
                            {'td': '\xa0'},
                            {'td': '\xa0'},
                        ],
                    },
                },
            ],
        },
    }