我想了解为什么这个方法有效:
>>> test_string = 'long brown fox jump over a lazy python'
>>> 'formatted "{test_string[0]}"'.format(test_string=test_string)
'formatted "l"'
但这失败了:
>>> 'formatted "{test_string[-1]}"'.format(test_string=test_string)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
>>> 'formatted "{test_string[11:14]}"'.format(test_string=test_string)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
我知道这可以用于:
'formatted "{test_string}"'.format(test_string=test_string[11:14])
...但就我的情况来说这是不可能的。
我正在处理一个类似沙盒的环境,其中将变量列表作为 kwargs 字典传递str.format()
。这些变量不在我的控制范围内。我事先知道变量的名称和类型,只能传递格式化字符串。格式化字符串是我唯一的输入。当我需要组合几个字符串或操作数字及其精度时,一切都很好。但是当我需要提取子字符串时,一切都崩溃了。