Почему возникает ошибка «TypeError: строковые индексы должны быть целыми числами» при использовании отрицательных индексPython

Программы на Python
Anonymous
Почему возникает ошибка «TypeError: строковые индексы должны быть целыми числами» при использовании отрицательных индекс

Сообщение Anonymous »

Мне хотелось бы понять, почему это работает нормально:

Код: Выделить всё

>>> 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 "", line 1, in 
TypeError: string indices must be integers
>>> 'formatted "{test_string[11:14]}"'.format(test_string=test_string)
Traceback (most recent call last):
File "", line 1, in 
TypeError: string indices must be integers
Я знаю, что это можно использовать:

Код: Выделить всё

'formatted "{test_string}"'.format(test_string=test_string[11:14])
...но в моей ситуации это невозможно.
Я имею дело со средой, похожей на песочницу, где передается список переменных в str.format() как словарь кваргов. Эти переменные находятся вне моего контроля. Я заранее знаю имена и типы переменных и могу передавать только строку форматера. Строка форматирования — мой единственный ввод. Все это прекрасно работает, когда мне нужно объединить несколько строк или манипулировать числами и их точностью. Но все разваливается, когда мне нужно извлечь подстроку.

Подробнее здесь: https://stackoverflow.com/questions/789 ... egative-in

Вернуться в «Python»