【发布时间】:2016-11-04 18:51:06
【问题描述】:
我正在尝试学习如何使用 Python 的 .format() 使我正在编写的测试的控制台输出看起来更具可读性,但我还没有完全理解它。
我目前的尝试是这样的:
print('({:d}/{:d}) {} {} {} {}'.format(test, num_tests, *item))
它可以很好地打印出我想要的内容,但我想对齐这些不同的字段,以便无论数字有多少,它们总是对齐。例如,我当前的输出如下所示:
(9/800) item1 item2 item3 item4
(10/800) item1 item2 item3 item4
有没有办法可以重写我的格式,让它看起来像这样?
(9/800) item1 item2 item3 item4
(10/800) item1 item2 item3 item4
【问题讨论】:
-
我认为这是不可能的,除非您提前知道特定字段的最大可能大小,我认为情况并非如此,因为您说“无论有多少位数.. ."。假设这两个后面的行是“(99999999999/800)”。 Python 无法返回并重写它已经打印的行以添加更多空格。 (如果你使用
curses或类似的,也许可以,但不是每个控制台都会支持) -
所以我可以放心地假设第一个数字永远不会比第二个数字多。我也可以假设 num_tests 永远不会超过 5 位数。我不需要它完全灵活。
-
如果你知道编译时的最大尺寸,你可以在格式字符串中手动指定宽度:
print('({:3d}/...。在运行时将第一个字段的 with 设置为第二个字段的长度会有点棘手。 -
除了左括号和第一个数字之间可能存在很大的空间之外,这很好用。我是唯一一个会看到这个的人,所以这并不重要,但感谢您的帮助。
标签: python python-3.x string-formatting string.format