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

时间:2017-03-09 21:40:15

标签: python string-formatting

我查看了具有此IndexError的类似问题,但没有找到我的案例的解释。有人可以解释我为什么会收到错误吗?

以下代码

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:元组索引超出范围

但是,我会计算7个占位符(即花括号{})和7个要输入的项目。为什么错误呢?感谢任何观点..

2 个答案:

答案 0 :(得分:10)

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

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

insertfmt.format(*mySF2[0])

答案 1 :(得分:0)

尝试使用 seaborn 和注释进行绘图时遇到了同样的问题。我正在使用

sns.heatmap(df, annot=True, fmt="{.0%}")

移除大括号固定它:

sns.heatmap(df, annot=True, fmt=".0%")