Как отсортировать данные из файла в топ-5 баллов - PullRequest
2 голосов
/ 17 апреля 2019

Я не уверен, как заставить мой файл сортировать и отображать 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

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете использовать следующий образец:

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

Пояснения:

  • re.compile(r"^(\d+)(\D+)$") будет использоваться для индивидуального извлечения партитуры и названия
  • sort_crit(i) вернет критерий двойной сортировки, основанный сначала на счете в обратном порядке (обратите внимание на -), за которым следует имя в алфавитном порядке
  • Вы открываете входной файл и сохраняете все строки в массиве
  • Вы сортируете строки, используя функцию сортировки, которую вы определили
  • вы выводите их в новый файл
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...