python - 根据分数对 CSV 文件进行排序
问题描述
我不知道如何打印和排序我的 csv 文件,该文件涉及我游戏中玩家的分数、姓名和时间,因此我可以打印前 5 个分数。
我一直在查看 stackoverflow,但找不到任何符合我要求或符合我需要的规格的东西。因此,如果有人可以提供帮助,那就太好了。
我的 csv 文件如下所示:
Human,02:00,120
Joe,03:00,180
Alex,01:00,60
Jason,05:00,300
Liza,06:00,360
John,07:00,420
Mark,04:00,240
文件列是:Name, Time, RawTime. The RawTime
column 是我想要排序的,以便列出前 5 名中的最低到最高时间
def addtoScoreboard(name, time, scores):
file = open("scores.csv", "a")
file.write("\n" + str(name) + "," + str(time) + "," + str(scores))
file.close
这就是我将分数添加到文本文件的方式。
如果有人可以帮助我对我的 csv 文件中的数据进行排序和打印,那将是非常酷的,我以后可以将其添加到我的游戏中。
解决方案
使用csv
模块。并使用sorted()
withkey
按时间排序。
前任:
import csv
with open(filename, "rU") as infile:
reader = csv.reader(infile)
data = [row for row in reader]
data = sorted(data, key=lambda x: int(x[-1])) #Sort by RawTime
with open(filename_1, "w") as outfile:
writer = csv.writer(outfile)
writer.writerows(data)
输出:
Alex,01:00,60
Human,02:00,120
Joe,03:00,180
Mark,04:00,240
Jason,05:00,300
Liza,06:00,360
John,07:00,420