Don't understand cause of "IndexError: tuple index out of range" when formatting string
Don't understand cause of "IndexError: tuple index out of range" when formatting string
我查看了具有此 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: tuple index out of range
但是,我计算了 7 个占位符(即大括号 {})和 7 个要输入的项目。为什么会出错?
str.format()
接受可变数量的参数,对应于格式字符串中 "holes" 的数量。在您的情况下,您将单个参数(列表)传递给 .format()
,这会导致错误,因为它需要七个参数。
要将数组作为单独的参数传递给函数,您需要像这样使用 *
运算符:
insertfmt.format(*mySF2[0])
尝试使用 seaborn
和注释绘图时遇到了同样的问题。我正在使用
sns.heatmap(df, annot=True, fmt="{.0%}")
移除大括号修复它:
sns.heatmap(df, annot=True, fmt=".0%")
我查看了具有此 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: tuple index out of range
但是,我计算了 7 个占位符(即大括号 {})和 7 个要输入的项目。为什么会出错?
str.format()
接受可变数量的参数,对应于格式字符串中 "holes" 的数量。在您的情况下,您将单个参数(列表)传递给 .format()
,这会导致错误,因为它需要七个参数。
要将数组作为单独的参数传递给函数,您需要像这样使用 *
运算符:
insertfmt.format(*mySF2[0])
尝试使用 seaborn
和注释绘图时遇到了同样的问题。我正在使用
sns.heatmap(df, annot=True, fmt="{.0%}")
移除大括号修复它:
sns.heatmap(df, annot=True, fmt=".0%")