Python 从文件中拆分字符串并分配变量

Python 从文件中拆分字符串并分配变量,python,string,file,pygame,Python,String,File,Pygame,我正在制作一个pygame,我试图添加一个高分功能,但我不太明白如何添加 我正在将姓名和分数保存到一个.txt文件中,如以下示例所示: christian careaga: 500 c dubb: 400 swag master: 50 在.txt中,每个分数和名称都放在一个新行上 我想把每个分数分配给它自己的变量,就像这样 score1 = christian careaga: 500 score2 = c dubb: 400 score3 = swag master: 50 最好的方法是

我正在制作一个pygame,我试图添加一个高分功能,但我不太明白如何添加

我正在将姓名和分数保存到一个.txt文件中,如以下示例所示:

christian careaga: 500
c dubb: 400
swag master: 50
在.txt中,每个分数和名称都放在一个新行上

我想把每个分数分配给它自己的变量,就像这样

score1 = christian careaga: 500
score2 = c dubb: 400
score3 = swag master: 50

最好的方法是什么?

不要为文件中的每个分数创建变量,而是使用字典:

with open("scores.txt") as f:
    scores = {'score{}'.format(i) : line.strip() for i,line in enumerate(f,1)}
现在访问如下所示的分数:

>>> scores['score1']
'christian careaga: 500'
>>> scores['score2']
'c dubb: 400'
>>> scores['score3']
'swag master: 50'
按排序顺序获取分数:

>>> for s in  sorted(scores.values(), key = lambda x: int(x.split()[-1]),
                                                                 reverse = True):
    print s
...     
christian careaga: 500
c dubb: 400
swag master: 50

不要为文件中的每个分数创建变量,而是使用字典:

with open("scores.txt") as f:
    scores = {'score{}'.format(i) : line.strip() for i,line in enumerate(f,1)}
现在访问如下所示的分数:

>>> scores['score1']
'christian careaga: 500'
>>> scores['score2']
'c dubb: 400'
>>> scores['score3']
'swag master: 50'
按排序顺序获取分数:

>>> for s in  sorted(scores.values(), key = lambda x: int(x.split()[-1]),
                                                                 reverse = True):
    print s
...     
christian careaga: 500
c dubb: 400
swag master: 50

为自己省去一些痛苦,使用一种更易于编写和解析的格式。将保存和加载数据,而无需额外解析:

import json

# write highscores
with open('highscores', 'w') as hscores:
    json.dump(my_hiscores_structure, hscores, indent=4)

# load highscores
with open('highscores', 'r') as hscores:
    my_hiscores_structure = json.load(hscores)

通过使用
indent=4
您可以写出一个可读性很强的结构。

省去一些麻烦,使用一种更易于编写和解析的格式。将保存和加载数据,而无需额外解析:

import json

# write highscores
with open('highscores', 'w') as hscores:
    json.dump(my_hiscores_structure, hscores, indent=4)

# load highscores
with open('highscores', 'r') as hscores:
    my_hiscores_structure = json.load(hscores)

通过使用
indent=4
您可以写出一个可读性很强的结构。

最好的办法是创建一个列表。使用
f.readlines()
。我认为您不想将它们全部分配给变量,然后,你必须按名称引用它们来查找最大值。最好使用while循环并搜索最大值。这是真的,但我仍然需要将它们拆分,当我显示它们时,我必须有一种方法来识别它们,无论是在列表中还是在使用变量。我们最好的办法是创建一个列表。使用
f.readlines()
。我认为您不想将它们全部分配给变量,然后你必须按名称引用它们来查找最大值。最好使用while循环,然后只搜索最大值。这是真的,但我仍然需要将它们拆分,当我显示它们我的游戏时,我必须有一种方法来识别它们,无论是在列表中还是使用变量。你认为有什么方法可以获得分数吗从高到低?@ChristianCareaga您可以对dict进行排序,请参见我的编辑。名字总是唯一的吗?@ChristianCareaga很高兴能帮上忙。这样做有效吗?你认为有什么办法可以让分数从高到低?@ChristianCareaga你可以对字典进行排序,请参见我的编辑。名字总是唯一的吗?@ChristianCareaga很高兴能帮上忙。有没有一种简单的方法可以做到这一点,从最高分到最低分?@ChristianCareaga:只需对结构进行排序;有关如何对python列表等进行排序的提示,请参阅。是否有一种简单的方法来实现这一点并将分数从高到低?@ChristianCareaga:只需对结构进行排序;有关如何对python列表等进行排序的提示,请参见。