Python 如何将文件中的数据排序到前5个分数

Python 如何将文件中的数据排序到前5个分数,python,file,sorting,text,Python,File,Sorting,Text,我不知道如何让我的文件排序和显示我的文本文件中前5名的分数。 文本文件如下: 24fred 23alan 24bert 28dan 11orange 17purple 16dave 22andy 我用来写入文件的代码 尝试使用排序,但无法使其仅显示前5名分数 file = open("Score.txt", "a") file.write(str(name)) file.write(str(Score)) file.write("\n") file.close 文件将按顺序打印出来,仅显示

我不知道如何让我的文件排序和显示我的文本文件中前5名的分数。 文本文件如下:

24fred
23alan
24bert
28dan
11orange
17purple
16dave
22andy 
我用来写入文件的代码

尝试使用排序,但无法使其仅显示前5名分数

file = open("Score.txt", "a")
file.write(str(name))
file.write(str(Score))
file.write("\n")
file.close

文件将按顺序打印出来,仅显示前5名。您可以使用以下示例:

import re

pat = re.compile(r"^(\d+)(\D+)$")
def sort_crit(i):
    m = pat.match(i)
    return - int(m.group(1)), m.group(2)


with open("Score.txt",'r') as f:
  lines = [line.rstrip() for line in f]
  lines.sort(key = sort_crit)
  with open('Sorted_score.txt', 'w') as f:
    for item in lines:
        f.write("%s\n" % item)
输入:

$ more Score.txt
24fred
23alan
24bert
28dan
28abc
11orange
17purple
16dave
22andy
$ more Sorted_score.txt
28abc
28dan
24bert
24fred
23alan
22andy
17purple
16dave
11orange
输出:

$ more Score.txt
24fred
23alan
24bert
28dan
28abc
11orange
17purple
16dave
22andy
$ more Sorted_score.txt
28abc
28dan
24bert
24fred
23alan
22andy
17purple
16dave
11orange
解释:

$ more Score.txt
24fred
23alan
24bert
28dan
28abc
11orange
17purple
16dave
22andy
$ more Sorted_score.txt
28abc
28dan
24bert
24fred
23alan
22andy
17purple
16dave
11orange
  • re.compile(r“^(\d+)(\d+$”)
    将用于单独提取分数和名称
  • sort\u crit(i)
    将首先根据分数按相反顺序返回双重排序标准(注意
    -
    ),然后按字母顺序返回名称
  • 打开输入文件并将所有行存储在一个数组中
  • 使用已定义的排序函数对行进行排序
  • 将它们输出到新文件中

请为此问题提供一个解决方案。如果您在Unix上工作,甚至不需要python来执行此操作,只需运行:
sort-n-r Score.txt | head-5
您可以添加用于排序步骤的代码吗?我认为您的问题可以很快得到回答,但这是必需的代码!文件“main.py”,第340行,在File.sort()AttributeError:“\u io.TextIOWrapper”对象没有属性“sort”有什么想法吗?