【问题标题】:Why are python strings left aligned in format with specified width?为什么python字符串以指定宽度的格式左对齐?
【发布时间】:2011-11-05 09:43:32
【问题描述】:

在考虑漂亮打印表头的方法时,我发现默认情况下整数是右对齐的,但字符串是左对齐的。

例如:

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

我只是认为所有对象都会通过默认方式以相同的方式对齐,我在问为什么不是这样。

【问题讨论】:

  • 我认为它只是被认为是自然的。这也是大多数电子表格程序中的标准格式。

标签: python string formatting


【解决方案1】:

您可能正在寻找类似的东西

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

哪个输出

    x
  245

对于“为什么”这个问题,我认为答案是,当您读取列中的一些数据时,您实际上希望字符串左对齐

a
ab
abc

而不是

   a
  ab
 abc

书籍中的文本也是左对齐的。对于数字,最自然的格式是右对齐

  7
 45
156   

例如,这是为求和、减法和乘法排列数字的方式。 Python 的选择实际上反映了排版约定。在表格中混合文本和数字可能被视为一种特殊情况。

【讨论】:

    【解决方案2】:

    正在通过documentation。不知道这是怎么回事。

    只是一个疯狂的猜测 - 我们从左到右读取文本,所以字符串

    【讨论】:

    • 我们以其他方式读取数字?我不认为这是相关的。
    【解决方案3】:

    Python 3 语法(在 2.6 中也可用)

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

    阅读format spec。这里的对齐说明符是>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 2015-07-20
      • 2016-12-30
      • 2013-10-10
      • 1970-01-01
      相关资源
      最近更新 更多