7.1.3. 手动格式化字符串

这是同一个平方和立方的表,手动格式化的:

  1. >>> for x in range(1, 11):
  2. ... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
  3. ... # Note use of 'end' on previous line
  4. ... print(repr(x*x*x).rjust(4))
  5. ...
  6. 1 1 1
  7. 2 4 8
  8. 3 9 27
  9. 4 16 64
  10. 5 25 125
  11. 6 36 216
  12. 7 49 343
  13. 8 64 512
  14. 9 81 729
  15. 10 100 1000

(注意每列之间的一个空格是通过使用 print() 的方式添加的:它总是在其参数间添加空格。)

字符串对象的 str.rjust() 方法通过在左侧填充空格来对给定宽度的字段中的字符串进行右对齐。类似的方法还有 str.ljust()str.center() 。这些方法不会写入任何东西,它们只是返回一个新的字符串,如果输入的字符串太长,它们不会截断字符串,而是原样返回;这虽然会弄乱你的列布局,但这通常比另一种方法好,后者会在显示值时可能不准确(如果你真的想截断,你可以添加一个切片操作,例如 x.ljust(n)[:n] 。)

还有另外一个方法,str.zfill() ,它会在数字字符串的左边填充零。它能识别正负号:

  1. >>> '12'.zfill(5)
  2. '00012'
  3. >>> '-3.14'.zfill(7)
  4. '-003.14'
  5. >>> '3.14159265359'.zfill(5)
  6. '3.14159265359'