如何右对齐数字数据?

36 投票
5 回答
103770 浏览
提问于 2025-04-15 14:12

我有一些数据,想以三列的格式展示,格式是这样的:

键: 值 键: <制表符> 键: 值 <制表符> 键: 值

这里有个例子:

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))

撰写回答