gpt4 book ai didi

python - 使用 .format() 格式化具有字段宽度参数的列表

转载 作者:IT老高 更新时间:2023-10-28 20:35:33 27 4
gpt4 key购买 nike

我最近(终于?)开始使用 .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)中没有成功(显然,如果这是可能的,我没有使用正确的语法),如果是这样,怎么办?

最佳答案

错误信息

ValueError: cannot switch from manual field specification to automatic field numbering

几乎说明了一切:您需要在任何地方给出明确的字段索引,并且

print('{0[0]:{1}s} {0[1]:{2}d} {0[2]:{3}f}'.format(res, 10, 5, .2))

工作正常。

关于python - 使用 .format() 格式化具有字段宽度参数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10875121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com