我最近(终于?)开始使用它.format()
并且可能有一个有点模糊的问题。
给定
res = ['Irene Adler', 35, 24.798]
和
(1) print('{0[0]:10s} {0[1]:5d} {0[2]:.2f}'.format(res))
(2) print('{:{}s} {:{}d} {:{}f}'.format(res[0], 10, res[1], 5, res[2], .2))
工作得很好,都打印:
Irene Adler 35 24.80
Irene Adler 35 24.80
我不知道我可以处理(1)中的列表,这很整洁。我之前已经看到过使用旧%
格式的字段宽度参数 (2)。
我的问题是关于想要做这样的事情,它结合了(1)和(2):
(3) print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, 10, 5, .2))
但是,我无法做到这一点,而且我无法从文档中弄清楚这是否可能。最好只提供要打印的列表和宽度参数。
顺便说一句,我也试过这个(没有运气):
args = (10, 5, .2)
(4) print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, args))
在这两种情况下,我得到:
D:\Users\blabla\Desktop>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 27, in <module>
print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, 10, 5, .2))
ValueError: cannot switch from manual field specification to automatic field numbering
D:\Users\blabla\Desktop>python tmp.py
Traceback (most recent call last):
File "tmp.py", line 35, in <module>
print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, args))
ValueError: cannot switch from manual field specification to automatic field numbering
我还尝试使用zip()
组合这两个序列而没有运气。
我的问题是:
我可以指定一个要有效打印的列表,以执行我在 (3) 和 (4) 中尝试未成功执行的操作(显然,如果这是可能的,我没有使用正确的语法),如果可以,怎么做?