与 python 打印/写入功能水平对齐?
Horizonatal alignment with python print / write functions?
我经常需要水平对齐的打印列表、词典等(类似于 MS-Word 中的制表符,但 不是 \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格式吗?
d= {454:99897754545,"x":5454,"john":"whatever"}
for k, v in d.items():
print('%-5s: %-20s' % (k,v))
输出:
x : 5454
john : whatever
454 : 99897754545
填充和对齐字符串
默认情况下,值的格式设置为只占用代表内容所需的字符数。然而,也可以定义一个值应该被填充到特定的长度。
遗憾的是,新旧样式格式的默认对齐方式不同。旧样式默认为右对齐,而新样式默认为左对齐。
右对齐:
旧
'%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
我经常需要水平对齐的打印列表、词典等(类似于 MS-Word 中的制表符,但 不是 \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格式吗?
d= {454:99897754545,"x":5454,"john":"whatever"}
for k, v in d.items():
print('%-5s: %-20s' % (k,v))
输出:
x : 5454
john : whatever
454 : 99897754545
填充和对齐字符串
默认情况下,值的格式设置为只占用代表内容所需的字符数。然而,也可以定义一个值应该被填充到特定的长度。
遗憾的是,新旧样式格式的默认对齐方式不同。旧样式默认为右对齐,而新样式默认为左对齐。
右对齐:
旧
'%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