У меня есть следующая функция в python, которая принимает входные данные и анализирует их в словаре. Я пытаюсь передать ему следующий ввод, и по какой-то причине строки artist=block[0]
заставляют его прерываться, потому что индекс списка выходит за пределы диапазона, и я действительно смущен почему. Он прерывается после чтения во втором Led Zeppelin
. Любая помощь в этом вопросе была бы весьма признательна.Список Python за пределами
Входной
Led Zeppelin
1969 II
-Whole Lotta Love
-What Is and What Should Never Be
-The Lemon Song
-Thank You
-Heartbreaker
-Living Loving Maid (She's Just a Woman)
-Ramble On
-Moby Dick
-Bring It on Home
Led Zeppelin
1979 In Through the Outdoor
-In the Evening
-South Bound Saurez
-Fool in the Rain
-Hot Dog
-Carouselambra
-All My Love
-I'm Gonna Crawl
Hello
Hello
Hello
Hello
Bob Dylan
1966 Blonde on Blonde
-Rainy Day Women #12 & 35
-Pledging My Time
-Visions of Johanna
-One of Us Must Know (Sooner or Later)
-I Want You
-Stuck Inside of Mobile with the Memphis Blues Again
-Leopard-Skin Pill-Box Hat
-Just Like a Woman
-Most Likely You Go Your Way (And I'll Go Mine)
-Temporary Like Achilles
-Absolutely Sweet Marie
-4th Time Around
-Obviously 5 Believers
-Sad Eyed Lady of the Lowlands
Функция
def add(data, block):
artist = block[0]
album = block[1]
songs = block[2:]
if artist in data:
data[artist][album] = songs
else:
data[artist] = {album: songs}
return data
def parseData():
global data,file
file=os.getenv('CDDB')
data = {}
with open(file) as f:
block = []
for line in f:
line = line.strip()
if line == '':
data = add(data, block)
block = []
else:
block.append(line)
data = add(data, block)
f.close()
return data
Вам не нужно 'f.close()'. Менеджер контекста выполняет эту работу за вас. – warvariuc
'block = []' - пустой массив. Поэтому 'block [0]' находится вне диапазона. Отлаживайте свой код, чтобы выяснить, при каких обстоятельствах 'block' равен' [] 'при попытке доступа к блоку [0]'. – Blorgbeard
Всякий раз, когда парсер пытается разобрать в блоке, начинающемся с 'Hello', когда блок равен []. Что может вызвать это? – Logan