Python 是否有一种方法可以在文本文件中切换多行?

Python 是否有一种方法可以在文本文件中切换多行?,python,python-3.x,text,ranking,leaderboard,Python,Python 3.x,Text,Ranking,Leaderboard,我需要一种方法/技巧,根据球员的得分对文本文件文档进行排序。因此,如果player2的得分高于player1,那么player2需要在文本文件中向上移动到player1的位置,反之亦然。这可能吗 因此,当文档在每行上列出不同的类别时,我找到了一些方法,这样它就会显示: 播放者1、3、2、1 播放器2、1、2、3 但我的问题是,每个播放器都有4行需要切换的代码。我的文本文件如下所示: 播放器1 3(*这才是最重要的) 2 1 播放器2 1* 2 3 因此,让我们假设玩家2玩了很多,并且得到

我需要一种方法/技巧,根据球员的得分对文本文件文档进行排序。因此,如果player2的得分高于player1,那么player2需要在文本文件中向上移动到player1的位置,反之亦然。这可能吗

因此,当文档在每行上列出不同的类别时,我找到了一些方法,这样它就会显示:

播放者1、3、2、1
播放器2、1、2、3

但我的问题是,每个播放器都有4行需要切换的代码。我的文本文件如下所示:

播放器1
3(*这才是最重要的)
2
1

播放器2
1*
2
3

  • 因此,让我们假设玩家2玩了很多,并且得到了比玩家1更高的分数。文本文档应该是这样的
播放器2
4(*)
3
2

播放器1
3(*这是最重要的一行)
2
1

  • 以便澄清;我需要对文本文件中最先写入得分最高的玩家的文档进行排序。这样我就可以打印出有问题的排行榜了

  • 请注意:我不是要代码,而是要一个可用于解决此类问题的方法/通用示例(或在何处找到)。Bc我真的不知所措,在我的书和这里看。所以,如果你对此有一个答案,或者知道一个回答了相同问题的线程,请发表评论,这将对我有很大帮助

我知道我没有任何代码可以提供,但那是因为没有代码。我真的只是需要一些帮助,从哪里开始/引导我走向一个方法或示例


提前感谢:D

首先,您不能轻松地直接修改此类文件。方法是:读取数据、修改数据、回写数据

我假设您可以将数据读入数据结构。例如,在您的例子中,数据可以自然地存储为4元组列表。每个4元组如下所示:

    ("player1", 3, 2, 1)
(您应该确保存储了分数的数字,而不是字符串,因为以后需要对它们进行比较。)

假设您已将它们存储在名为player\u list的列表中

接下来,您需要对列表进行排序。您需要的排序键是每个元组中的第二个条目,在Python术语中,它有索引1(因为编号从0开始)

然后,您可以使用此排序键传递给排序函数(请参见此),该函数将对列表进行适当排序:

player_list . sort ( key = sort_key, reverse = True )
(我们需要“反向”以确保订单是递减的,而不是递增的。)

最后,您需要以新的顺序再次写出player_列表来覆盖该文件:

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)
空元组是(),具有单个元素x的元组是(x,)

在两者之间转换很容易:

list(mytuple) # returns [2,4,6,8]
tuple(mylist) # returns (2,4,6,8)

请注意,如果您有一个文本文件,而没有其他工具,则需要将其全部读入内存并修改内存中的字符串。然后将修改后的字符串写出来,替换原始文件。首先,您应该将所有玩家解析到字典中,以便每个玩家都有一个分数列表。然后,只需在所有列表中获得最高分并返回字典键值对即可。谢谢,安德鲁!我对使用元组以及元组和列表之间的转换并不完全有信心,但我会尽我所能。不过,这对我的入门很有帮助,所以谢谢。不客气。我在元组和列表中添加了一些注释。如果有帮助,请投票/接受答案。
list(mytuple) # returns [2,4,6,8]
tuple(mylist) # returns (2,4,6,8)