为什么Python字符串在指定宽度格式中左对齐?
在考虑如何美观地打印表格标题时,我发现整数默认是右对齐的,而字符串则是左对齐的。
举个例子:
>>> 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
我在看文档,对这个完全没有头绪。
只是随便猜测一下——我们是从左到右读文本,所以字符串也是这样。