Python 3 - 在str.format()中使用元组

时间:2014-11-05 13:23:55

标签: python string tuples string-formatting

我正在尝试使用str.format()方法,并且当我的值存储在元组中时遇到一些困难。例如,如果我这样做:

s = "x{}y{}z{}"
s.format(1,2,3)

然后我得到'x1y2z3' - 没问题 但是,当我尝试:

s = "x{}y{}z{}"
tup = (1,2,3)
s.format(tup)

我得到了

IndexError: tuple index out of range.

那么如何将元组“转换”为单独的变量呢?或任何其他解决方法的想法?

2 个答案:

答案 0 :(得分:17)

使用*arg variable arguments call syntax传递元组:

s = "x{}y{}z{}"
tup = (1,2,3)
s.format(*tup)

*之前的tup告诉Python将元组解压缩为单独的参数,就好像你调用了s.format(tup[0], tup[1], tup[2])一样。

或者您可以索引第一个位置参数:

s = "x{0[0]}y{0[1]}z{0[2]}"
tup = (1,2,3)
s.format(tup)

演示:

>>> tup = (1,2,3)
>>> s = "x{}y{}z{}"
>>> s.format(*tup)
'x1y2z3'
>>> s = "x{0[0]}y{0[1]}z{0[2]}"
>>> s.format(tup)
'x1y2z3'

答案 1 :(得分:-2)

您可以解锁元组的内容。

s=s.format(*t)