2022年 11月 7日

python 格式化打印

python 格式化打印

# coding=utf-8
def myprint(d):
    print(myprint2(d, 0))


def myprint2(d, deep=0):
    result = ''
    newline = '\n'
    suojin = '    ' * deep
    if isinstance(d, dict):
        start, end = '{', '}'
        result = suojin + start + newline  # 定义当前字典的开头缩进,以及左括号
        for key in d.keys():
            result += myprint2(key, deep + 1) + ' : '  # 打印键,以及冒号
            if isinstance(d[key], (list, dict, tuple)):
                result = result + newline + myprint2(d[key], deep + 1) + ',' + newline  # 如值不是字符串,则换行进行打印这个序列或者字典
            else:
                result = result + repr(d[key]) + ',' + newline  # 若值是字符串,则直接打印字符串,并且加上逗号和换行

        result += suojin + end  # 打印结果的缩进,以及右括号
        return result

    elif isinstance(d, list):
        start, end = '[', ']'
        result = suojin + start + newline  # 定义当前序列的开头缩进,以及左括号
        for value in d:
            result = result + myprint2(value, deep + 1) + ',' + newline  # 直接将内容放入myprint2打印,并且加上新的缩进
        result += suojin + end  # 定义结尾的缩进,以及右括号
        return result
    elif isinstance(d, tuple):
        start, end = '(', ')'
        result = suojin + start + newline
        for value in d:
            result = result + myprint2(value, deep + 1) + ',' + newline
        result += suojin + end
        return result
    else:
        return suojin + repr(d)  # 打印字符串加上引号结果


if __name__ == '__main__':
    d1 = {'a': {'a': 1, 'b': 2}}
    d2 = ['aaaaaaa', 1231231235, [12312311, 123132, 3123213], ['asdfsaf', '123213123', 'asdfsaf']]
    d3 = 'asdfasddf'
    d4 = (1, 2, 3, 4)
    print(myprint(d3))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46