Во-первых, вы не можете легко изменить этот тип файла напрямую. Метод такой: чтение данных, изменение данных, запись данных обратно.
Я предполагаю, что вы можете читать свои данные в структуру данных. Например, в вашем случае данные могут быть естественно сохранены в виде списка из 4-х кортежей. Каждый 4-кортеж будет выглядеть следующим образом:
("player1", 3, 2, 1)
(Вы должны убедиться, что у вас есть сохраненные числа для оценок, а не строк, потому что их нужно сравнивать позже.)
ДавайтеПредположим, вы сохранили их в списке player_list
Далее вам нужно отсортировать список. Ключ сортировки, который вам нужен, - это вторая запись в каждом кортеже, которая в терминах Python имеет индекс 1 (поскольку нумерация начинается с 0)
def sort_key ( tup ): return tup[1]
Затем вы можете использовать этот ключ сортировки для перехода к функции сортировки (см. это https://docs.python.org/3/library/stdtypes.html#list.sort) Это сортирует ваш список на месте:
player_list . sort ( key = sort_key, reverse = True )
(нам нужно «перевернуть», чтобы убедиться, что порядок уменьшается, а не увеличивается.)
Наконец, вам нужно перезаписать файл, снова записав player_list, в новом порядке:
for (player, s1, s2, s3) in player_list:
write_entry_to_file ( player, s1, s2, s3 ) # use whatever format you need here.
Примечание к кортежам:
Кортежей многокак списки, за исключением того, что после создания кортежа его нельзя изменить («неизменяемый»). Для создания кортежа вы используете круглые скобки (), а не квадратные скобки [].
mylist = [2, 4, 6, 8]
mytuple = (2, 4, 6, 8)
Вы можете индексировать их таким же образом
mylist[0] # returns 2
mytuple[0] # returns 2 too
mylist[1:3] # returns the list [4, 6]
mytuple[1:3] # returns the tuple (4, 6)
и добавлять их таким же образом
[2,4] + [6,8] # returns [2,4,6,8]
(2,4) + (6,8) # returns (2,4,6,8)
Пустой кортеж is (), икортеж с одним элементом x - это (x,)
, преобразование между ними легко:
list(mytuple) # returns [2,4,6,8]
tuple(mylist) # returns (2,4,6,8)