Gostaria de entender por que isso funciona bem:
>>> test_string = 'long brown fox jump over a lazy python'
>>> 'formatted "{test_string[0]}"'.format(test_string=test_string)
'formatted "l"'
Mas isso falha:
>>> '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
Eu sei que isso poderia ser usado:
'formatted "{test_string}"'.format(test_string=test_string[11:14])
...mas isso não é possível na minha situação.
Estou lidando com um ambiente tipo sandbox onde uma lista de variáveis é passada para str.format()
um dicionário de kwargs. Essas variáveis estão fora do meu controle. Eu sei os nomes e tipos de variáveis com antecedência e só posso passar a string do formatador. A string do formatador é minha única entrada. Tudo funciona bem quando preciso combinar algumas strings ou manipular números e sua precisão. Mas tudo desmorona quando preciso extrair uma substring.