如何右对齐数字数据?
我有一些数据,想以三列的格式展示,格式是这样的:
键: 值 键: <制表符> 键: 值 <制表符> 键: 值
。
这里有个例子:
p: 1 sl: 10 afy: 4
q: 12 lg: 10 kla: 3
r: 0 kl: 10 klw: 3
s: 67 vw: 9 jes: 3
t: 16 uw: 9 skw: 3
u: 47 ug: 9 mjl: 3
v: 37 mj: 8 lza: 3
w: 119 fv: 8 fxg: 3
x: 16 fl: 8 aew: 3
不过,我希望这些数字能够右对齐,比如这样:
a: 1
b: 12
c: 123
我该如何在Python中实现这个效果呢?
这是我现在的打印代码:
print(str(chr(i+ord('a'))) + ": " + str(singleArray[i]) + "\t" +
str(doubleArray[i][0]) + ": " + str(doubleArray[i][1]) + "\t" +
str(tripleArray[i][0]) + ": " + str(tripleArray[i][1]))
5 个回答
27
使用Python的字符串格式化方法:'%widths'
,其中的width是一个整数。
>>> '%10s' % 10
' 10'
>>> '%10s' % 100000
' 100000'
79
在 Python 2.6 及以上版本(在 3 版本中也是标准方法),字符串格式化的“推荐”方式是使用 string.format() 方法(完整的文档可以在 这里 找到)。
如果你想让字符串右对齐,可以使用
"a string {0:>5}".format(foo)
这段代码会占用 5 个字符的位置,不过
"a string {0:>{1}}".format(foo, width)
也是可以的,它会根据传给 .format() 的值的宽度来调整。
35
在Python 2.5中,可以使用rjust这个方法来处理字符串。同时,建议你习惯使用字符串格式化,而不是单纯地把字符串拼接在一起。下面是rjust和字符串格式化的简单示例:
width = 10
str_number = str(ord('a'))
print 'a%s' % (str_number.rjust(width))