首页 > 解决方案 > 根据分数对 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 RawTimecolumn 是我想要排序的,以便列出前 5 名中的最低到最高时间

def addtoScoreboard(name, time, scores):
    file = open("scores.csv", "a")
    file.write("\n" + str(name) + "," + str(time) + "," + str(scores))
    file.close

这就是我将分数添加到文本文件的方式。

如果有人可以帮助我对我的 csv 文件中的数据进行排序和打印,那将是非常酷的,我以后可以将其添加到我的游戏中。

标签: python

解决方案


使用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

推荐阅读