Я знаю, что, чтобы получить индекс символа от конца строки, ...
Я думаю, вы можете запутаться здесь, он делает не получить индекс от конец строки, он получает индекс от start строки, но только начинает ищет из данного индекса.
Это становится очевидным, если ввести и запустить следующий код:
def test(string):
for letter in 'e':
print string.index(letter, -1)
test("abcde")
и вы правильно получить 4
как выход, положение e
с начала строки.
В своем коде (и приведенном выше примере), мы говорим это обыскивать подстрока начиная с индекса -1
, что только последний символ в строке.
Итак, если ваша строка "abc"
, она сначала ищет a
в подстроке "c"
и, не найдя ее, вызовет исключение.
Изменение кода:
def test(string):
for letter in string:
print string.index(letter)
test("abcde")
даст вам правильные индексы без вызывая исключение.
Если вы сделать нужен индекс с конца строки (так что e
является 0
и a
является 4
), некоторые простые математические манипуляции будут делать это:
def test(string):
for letter in string:
print len(string) - string.index(letter, 0) - 1
test("abcde")
Этот код дает вам, для писем a
через e
:
4
3
2
1
0
[ 'str.index'] (https://docs.python.org/2/library/stdtypes.html?highlight=rindex#str.ind ex) выдает исключение, если подстрока не найдена, вы знаете. –