位置参数元组的替换索引 1 超出范围

替换索引 1 超出位置参数元组的范围

Replacement index 1 out of range for positional args tuple

Python“IndexError: Replacement index 1 out of range for positional args tuple”发生在我们使用该format()方法而不为所有替换字段提供值时。

要解决该错误,请确保为每个替换字段提供一个值。

索引错误替换索引 1 超出范围

下面是错误如何发生的示例。

主程序
# ⛔️ IndexError: Replacement index 1 out of range for positional args tuple my_str = 'His name is {} {}'.format('Bobby')

错误是如何发生的

请注意,我们只为第一个替换字段传递了一个值。

为每个替换字段指定一个值

要解决该错误,请确保为每个替换字段指定一个值。

主程序
my_str = 'His name is {} {}'.format('Bobby', 'Hadz') print(my_str) # 👉️ 'His name is Bobby Hadz'

示例中的字符串有 2 个替换字段{},因此我们将 2 个参数传递给该str.format()方法。

如果您只想拥有 1 个替换字段,请删除第二个。

主程序
my_str = 'His name is {}'.format('Bobby') print(my_str) # 👉️ His name is Bobby

示例中的字符串只有 1 个替换字段,因此我们在对 的调用中传递了一个参数format()

在调用 format() 时解包列表或元组

如果您有一个可迭代对象(例如列表或元组),请使用星号来解压可迭代对象的项目。

主程序
my_list = ['Bobby', 'Hadz'] my_str = 'His name is {} {}'.format(*my_list) print(my_str) # 👉️ 'His name is Bobby Hadz'

星号*在对方法的调用中解包可迭代项format()

使用解包时,您必须确保可迭代对象的元素数量与{}字符串中的替换字段数量完全相同。

str.format
方法执行
字符串
格式化操作。

主程序
first = 'Bobby' last = 'Hadz' result = "His name is {0} {1}".format(first, last) print(result) # 👉️ "His name is Bobby Hadz"

调用该方法的字符串可以包含使用花括号指定的替换字段{}

使用关键字参数而不是位置参数

您还可以使用关键字参数而不是位置参数。

主程序
first = 'Bobby' last = 'Hadz' result = "His name is {f} {l}".format(f=first, l=last) print(result) # 👉️ "His name is Bobby Hadz"
确保为该format() 方法提供的参数与字符串中的替换字段一样多。

如果您决定将位置参数与数字索引一起使用,请确保从 开始0,例如{0},因为索引在 Python 中是从零开始的。

使用格式化的字符串文字而不是 str.format()

或者,您可以使用
格式化字符串文字
来连接字符串。

主程序
first = 'Bobby' last = 'Hadz' result = f'His name is {first} {last}' print(result) # 👉️ "His name is Bobby Hadz"
格式化字符串文字 (f-strings) 让我们通过在字符串前加上f.

确保将表达式括在大括号 – 中{expression}

这应该是您的首选方法,因为
格式化字符串文字是 Python 的最新补充,并提供更易于阅读的语法。