Python 如何将文件中的数据排序到前5个分数
我不知道如何让我的文件排序和显示我的文本文件中前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 文件将按顺序打印出来,仅显示
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)
),然后按字母顺序返回名称-
- 打开输入文件并将所有行存储在一个数组中
- 使用已定义的排序函数对行进行排序
- 将它们输出到新文件中
sort-n-r Score.txt | head-5
您可以添加用于排序步骤的代码吗?我认为您的问题可以很快得到回答,但这是必需的代码!文件“main.py”,第340行,在File.sort()AttributeError:“\u io.TextIOWrapper”对象没有属性“sort”有什么想法吗?