为什么Python字符串在指定宽度格式中左对齐?

0 投票
3 回答
4421 浏览
提问于 2025-04-17 05:41

在考虑如何美观地打印表格标题时,我发现整数默认是右对齐的,而字符串则是左对齐的。

举个例子:

>>> for i in (1,'x',0.0):
...     print("{0:5}".format(i))
... 
    1
x    
  0.0

这可以通过明确设置对齐方式来轻松解决,但我想知道为什么会这样?

编辑:

我并不是在寻找对齐字符串的方法,这个很简单:

>>> for i in (1,'x',0.0):
...     print("{0:>5}".format(i))
... 
    1
    x
  0.0

我只是觉得所有对象默认应该是以相同的方式对齐的,我在问为什么不是这样。

3 个回答

0

这是Python 3的语法(在2.6版本也可以用)。

>>> print("{foo:>5s}\n{bar:>5d}".format(foo="a", bar=100))
    a
  100

你可以查看这个格式规范。这里的对齐符号是>

1

可能你在寻找这样的东西

print ( "%5s" % ('x',) )
print ( "%5d" % (245,) )

它会输出

    x
  245

至于“为什么”的问题,我觉得答案是,当你在某一列读取数据时,其实你希望字符串是左对齐的

a
ab
abc

而不是

   a
  ab
 abc

另外,书中的文字也是左对齐的。对于数字来说,最自然的格式是右对齐

  7
 45
156   

这其实是进行加法、减法和乘法时排列数字的方式。Python的选择实际上反映了排版的习惯。在表格中混合文本和数字可能被视为一种特殊情况。

1

我在看文档,对这个完全没有头绪。

只是随便猜测一下——我们是从左到右读文本,所以字符串也是这样。

撰写回答