替换索引 1 超出位置参数元组的范围
Replacement index 1 out of range for positional args tuple
Python“IndexError: Replacement index 1 out of range for positional args tuple”发生在我们使用该format()
方法而不为所有替换字段提供值时。
要解决该错误,请确保为每个替换字段提供一个值。
下面是错误如何发生的示例。
主程序
# ⛔️ 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 的最新补充,并提供更易于阅读的语法。