我正在尝试使用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.
那么如何将元组“转换”为单独的变量呢?或任何其他解决方法的想法?
答案 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)