Получение индекса за пределами допустимой ошибки при использовании pop в python
Я пытаюсь прочитать текстовый файл и удалить из него все слова остановки. Тем не менее, я получаю ошибку индекса вне диапазона при использовании b[i].pop(j)
. Но если я использую print(b[i][j])
, я не получаю никакой ошибки и не получаю слова как выходные данные. Может ли кто-нибудь обнаружить ошибку?
import nltk from nltk.corpus import stopwords stop = stopwords.words('english') fo = open("text.txt", "r") # text.txt is just a text document list = fo.read(); list = list.replace("\n","") # removing newline character b = list.split('.',list.count('.')) # splitting list into lines for i in range (len(b) - 1) : b[i] = b[i].split() # splitting each line into words for i in range (0,len(b)) : for j in range (0,len(b[i])) : if b[i][j] in stop : b[i].pop(j) # print(b[i][j]) #print(b) # Close opend file fo.close()
Вывод:
Traceback (most recent call last): File "prog.py", line 29, in <module> if b[i][j] in stop : IndexError: list index out of range
Вывод на комментарий b[i].pop(j)
и un- b[i].pop(j)
print(b[i][j])
:
is that the from the the the can the and and the is and can be into is a or
- Получение различий между двумя 2D-списками
- Python – повторение результата list.append
- Список одинаковых подписчиков Python
- Получить элементы из многомерного списка Python
- Как создать список 1d с .txt с \ n?
Вы удаляете элементы из списка, когда вы выполняете итерацию по ним, это приводит к уменьшению размера списка во время итерации, но итерация по-прежнему будет продолжаться для длины исходного списка, что вызовет такие проблемы InderError
.
Вместо этого вы должны попытаться создать новый список, включая только те элементы, которые вы хотите. Пример –
result = [] for i in range (0,len(b)): templist = [] for j in range (0,len(b[i])): if b[i][j] not in stop : templist.append(b[i][j]) result.append(templist)
То же самое можно сделать в понимании списка –
result = [[word for word in sentence if word not in stop] for sentence in b]
- Удалите дубликаты в списке, сохраняя при этом его порядок (Python)
- Какой самый питоновский способ идентифицировать последовательные дубликаты в списке?
- Найдите количество последовательных элементов, которые будут одинаковыми до их изменения
- Почему len (list) вместо list.len () в python?
- Объединение двух списков и удаление дубликатов без удаления дубликатов в исходном списке
- Найдите число 1 в одной позиции в двух массивах
- Список индексов вне диапазона в 2D-списке
- добавить один и тот же элемент в несколько подписок в python
- Переупорядочить элементы в списке таким образом, чтобы ни один из двух соседних одинаковых