我正在尝试覆盖CSV文件中的现有数据:
song_list = open('songs.csv', 'r+')
这里是文件:
Somebody That I Used to Know,Gotye featuring Kimbra,2012,u
Heartbreak Hotel,Elvis Presley,1956,u
Macarena,Los Del Rio,1996,l
I Want to Hold Your Hand,The Beatles,1964,u
Boom Boom Pow,The Black Eyed Peas,2009,u
My Sharona,The Knack,1979,l
CSV文件是一个歌曲列表,每行显示歌曲信息,艺术家,年份,最后一个是'u'或'l',代表未经学习和学习用户将输入数字以将歌曲标记为已学习]
test = True
while test == True:
try:
number = int(input("Enter the number of a song to be marked as learnt: "))
test = False
except ValueError:
print("Invalid input, please enter a number")
csv_song = csv.reader(song_list)
line = [csv_song]
line[number - 1][3] = 'l'
writer1 = csv.writer(song_list)
writer1.writerow(line)
print("'{} by {} from {}' learnt".format(line[number - 1][0], line[number - 1][1], line[number - 1][2]))
然后我收到此错误:
line[number - 1][3] = 'l'
IndexError: list index out of range
为什么会这样?
未声明变量number
。较大列表的最后一个元素没有[3]
元素(第4个元素)。