Что вы пытаетесь сделать? Каким будет ваше возвращение?
Причина, по которой это не работает, заключается в следующем:
r = (2,3)
txt[r[0]][r[1]] -> txt[2][3]
txt[2] == 's'
s[3] -> IndexError
Как уже упоминалось @Abhijit, если вы пытаетесь схватить персонажа с помощью среза, то
txt[r[0]:r[1]] is correct.
Однако, если вы всегда делаете фрагмент, который захватывает один символ, то есть ваш кортеж всегда имеет форму (N, N + 1), например (2, 3), тогда вы можете изменить свою стратегию.
Обратите внимание, что для данного примера вы можете сделать:
if any([letter in txt for letter in ['l', 'b']]):
return True
Если вам нужно проверить фактические фрагменты в тексте, а не только один символ, то вышеприведенное будет работать.
if any([letter_group in txt for letter_group in ['te', 'st']]):
return True
или даже:
if any([letter in txt for letter in 'lb']]):
return True
например ...