python - 与python打印/写入功能水平对齐?
问题描述
我经常需要水平对齐良好的打印列表、字典等(类似于 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格式化吗?
解决方案
填充和对齐字符串
默认情况下,值的格式设置为仅占用表示内容所需的字符数。然而,也可以定义一个值应该被填充到一个特定的长度。
不幸的是,新旧样式格式的默认对齐方式不同。旧样式默认为右对齐,而新样式默认为左对齐。
右对齐:
老的
'%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
推荐阅读
- android - Kotlin 仅包装类
- excel - 您可以在 SUMIF 中使用 UDF 进行逻辑测试吗?
- oracle - 如何验证列在 PLSQL 中是否可以为空
- angular - 如何在 Angular 后调用中正确发送 application/x-www-form-urlencoded
- c# - 按字母顺序排列,Array.Sort() 效果不佳
- angular - Rxjs 将超时错误从管道抛出到可观察的错误部分
- xamarin.forms - 如何从 FirebaseMsgService 取消订阅以停止接收通知
- typescript - 是否有更简单的方法来查询 Cloud Firestore 以获取用户未见过的特定集合中的所有文档?
- .net - XAML - 如何将运行作为 ItemsControl ItemTemplate?
- python - (Censor Dispenser) codecadamey 挑战