使用python覆盖CSV文件中的特定数据

问题描述 投票:0回答:1

我正在尝试覆盖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

为什么会这样?

python list csv overwrite
1个回答
-1
投票

未声明变量number。较大列表的最后一个元素没有[3]元素(第4个元素)。

© www.soinside.com 2019 - 2024. All rights reserved.