"Поиск" вызывает "Строковый индекс вне диапазона"? (Python)
Я пытаюсь идентифицировать все экземпляры определенного синтаксического шаблона, найденного в тексте: RB + NN|NNS|NP|PP. То есть я ищу наречия, за которыми сразу следуют существительные. Я пометил свой текст с помощью TreeTagger. Текст с тегами хранится в списке под названием "теги", который выглядит следующим образом:
how WRB
hard JJ
it PP
was VBD
Это соответствующая часть моего кода:
adverb = re.compile(r'RB$')
noun = re.compile(r'NN')
for n in range(len(tags)):
w = tags[n]
if adverb.search(w) != None and noun.search(w[n+1]) != None:
print(' '.join(tags[n-2 : n+3]))
Моя проблема в том, что пятая строка выдает следующую ошибку:
if adverb.search(w) != None and noun.search(w[n+1]) != None:
IndexError: string index out of range
Если четвертая строка кода это...
if adverb.search(w) != None:
... затем возвращается список наречий.
Я действительно заблудился относительно 1) почему я получаю эту ошибку и 2) как я могу это исправить. Любое руководство, которое вы, ребята, можете предложить, будет очень ценным
1 ответ
Ваша проблема заключается в следующем:
w[n+1]
Вы путаете свой список tags
со строкой в этом списке, w
, Если вы хотите получить доступ к другому элементу в списке, вам нужно использовать tags[...]
не w[...]
, Кроме того, вы должны убедиться, что используемый вами индекс находится внутри диапазона списка.