Python 3格式方法 - 元组索引超出范围

时间:2015-10-22 16:53:24

标签: python-3.x string-formatting

Python 3.4.2中的格式方法有问题。显示以下错误:

Traceback (most recent call last):
  Python Shell, prompt 2, line 3
builtins.IndexError: tuple index out of range

代码:

A = "{0}={1}"
B = ("str", "string")
C = A.format(B)
print (C)

元组包含两个索引为0和1的字符串,不应显示此错误。

2 个答案:

答案 0 :(得分:1)

根据docs,您应该将参数作为位置参数传递,而不是作为元组传递。如果要使用元组中的值,请使用*运算符。

str.format(*args, **kwargs)
     

执行字符串格式化操作。调用此方法的字符串可以包含由大括号{}分隔的文字文本或替换字段。每个替换字段都包含位置参数的数字索引或关键字参数的名称。返回字符串的副本,其中每个替换字段都替换为相应参数的字符串值。

     

“1 + 2的总和为{0}”。格式(1 + 2)   '1 + 2的总和是3'

更具体地说,您需要执行以下操作:

A = "{0}={1}"
B = ("str", "string")
C = A.format(*B)
print (C)

A = "{0}={1}"
C = A.format("str", "string")
print (C)

答案 1 :(得分:0)

你必须解压缩元组才能有两个参数而不是一个元组:

A = "{0}={1}"
B = ("str", "string")
C = A.format(*B)
print (C)

或修改您的格式字符串以接受一个序列中包含两个元素的参数。

A = "{0[0]}={0[1]}"
B = ("str", "string")
C = A.format(B)
print (C)