Не удается получить доступ к списку с помощью индекса

#python #list

#python #Список

Вопрос:

Следующий код показывает, что ошибка индекса: индекс списка находится вне диапазона

Здесь я пытаюсь найти строку, которая начинается с «From», а затем напечатать слово рядом с ней, используя .split()

 if len(fname) < 1 : fname = "mbox-short.txt"
fh = open(fname)
count = 0
for a in fh:
    a=a.rstrip()
    b=a.split()
    if b[0]=="From":
        count=count 1
        print(b[1])
print("There were", count, "lines in the file with From as the first word")
  

для следующей строки
if b[0]=="From":

Где я ошибаюсь?

Комментарии:

1. «Где я ошибаюсь?» Ну, в нем говорится, что есть IndexError , который Error имеет отношение к Index используемому вами. В нем конкретно указано, что index вы используете для list is out of range . Ваш list есть b , а ваш index есть 0 . Что должно быть истинным для b , чтобы этот индекс был вне диапазона? Теперь рассмотрим, как b создается. Что должно быть истинным, чтобы список получился таким?

Ответ №1:

Проверьте длину перед доступом к индексу массива.

if len(b) > 0 and b[0] == 'From':

Также убедитесь, что вы закрыли открытый файл.

fh.close()

Ответ №2:

ну, проблема в том, что если a пусто, a.strip ничего не вернет, поэтому вам нужно проверить if a != "" , и у вас все должно быть хорошо