与python打印/写入函数的水平对齐?

2024-04-26 05:09:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常需要打印列表、字典等,并且水平对齐(类似于MS Word中的tab,但不是\t字符)。你知道吗

实现它的功能并不难。例如

def printDictTabed(dct,ntab=10):
    for k,v in dct.items():
        sk  = str(k)
        tab = ' '*max(0,ntab-len(sk))
        print sk,tab,": ",v

printDictTabed({454:99897754545,"x":5454,"john":"whatever"},ntab=6)

输出:

x       :  5454
john    :  whatever
454     :  99897754545

但是这难道不可能用标准的python格式化来实现吗?


Tags: 功能列表字典def水平字符johntab
2条回答

使用string formating

d= {454:99897754545,"x":5454,"john":"whatever"}

for k, v in d.items():
    print('%-5s:   %-20s' % (k,v))

输出:

x    :   5454                
john :   whatever            
454  :   99897754545   

填充和对齐字符串

默认情况下,值的格式设置为仅占用表示内容所需的尽可能多的字符。但是,也可以定义值应填充到特定长度。你知道吗

不幸的是,新旧样式格式之间的默认对齐方式不同。旧样式默认为右对齐,而新样式为左对齐。你知道吗

https://pyformat.info/

右对齐:

旧的

'%10s' % ('test',)

新建

'{:>10}'.format('test')

左对齐:

旧的

'%-10s' % ('test',)

新建

'{:10}'.format('test')

你的例子:

def printDictTabed(dct):
    for k,v in dct.items():
        print('{:10}:{:>15}'.format(str(k), str(v)))

printDictTabed({454:99897754545,"x":5454,"john":"whatever"})

输出:

454       :    99897754545
x         :           5454
john      :       whatever

相关问题 更多 >