当条件匹配时,在Python中仅使用csv包更新单元格值



我正在尝试创建一个更新函数,以便在或studentID与用户查询的匹配时更新同一csv文件中的学生分数值;我的csv文件如下所示;

Name, studentID, Marks, Grade
Joan,   1735,   90,    A
Dev,    0374,   69,    B
Betty,  647,    55,    C

我尝试过的代码是:

def updatefunc():
stid= input("Enter a studentID : ")
fieldnames = ["Name", "StuID", 'Marks', 'Grade']
with open('File.csv', 'r') as csvfile, open('output.csv', 'w') as output:
reader = csv.DictReader(csvfile, fieldnames=fieldnames)
writer = csv.DictWriter(output, fieldnames=fieldnames)
for row in reader:
if chid == row['ID']:
row['Marks'] = input("enter new name  {}".format(Marks))

writer.writerow({'Name': row['Name'], 'StuID': row['StuID'], 'Marks': row['Marks'],'Grade': row['Grade']})

如果您只能使用csv模块,则需要:

  • 读取文件
  • 将所有行保存到新列表中,并根据需要进行更新
  • 将数据写入新文件
def updatefunc():
new_rows = []
stid= input("Enter a studentID : ")
fieldnames = ["Name", "StuID", 'Marks', 'Grade']
with open('File.csv', 'r') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=fieldnames)
for row in reader:
if stid == row['StuID']:
row['Marks'] = input("enter new name  {}".format(Marks))
new_rows.append({'Name': row['Name'], 'StuID': row['StuID'], 'Marks': row['Marks'],'Grade': row['Grade']})
# Write the amended data out to the file.
with open('File.csv', 'w') as output:
writer = csv.DictWriter(output, fieldnames=fieldnames)
writer.writerows(new_rows)

最新更新