在Python中格式化字符串时,“IndexError:元组索引超出范围”

“IndexError: tuple index out of range” when formatting string in Python

我看了有这个索引错误的类似问题,但没有找到对我的案例的解释。有人能解释我为什么会出错吗?

以下代码

1
2
3
4
5
6
7
8
mySF2[0]=['000browser', '1', 'Floor', '0.92', '1.74', 'con', 'None']

insertfmt = ' '.join([
"INSERT INTO mySchema.myTable_{}_name (col1, col2, col3, col4, col5, col6)",  
"VALUES ({}, {}, NULLIF({},'None')::decimal, NULLIF({},'None')::decimal, {}, NULLIF({},'None')::int)"
         ])

insertfmt.format(mySF2[0])

给出这个错误

IndexError: tuple index out of range

但是,我计算了7个占位符(即花括号)和7个要输入的项。为什么会出错?谢谢你的观点。


str.format()接受与格式字符串中的"孔数"相对应的变量个数的参数。在您的例子中,您将一个参数(列表)传递给.format(),这会导致一个错误,因为它需要七个参数。

要将数组作为单独的参数传递给函数,需要使用*运算符,如下所示:

1
insertfmt.format(*mySF2[0])