天天看点

python中format格式化所占的宽度_python – 使用.format()格式化具有字段宽度参数的列表...

我最近(最后?)开始使用.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

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

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)中(在明显地这可能的情况下),我是失败的

不使用正确的语法),如果是这样,怎么办?