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

时间:2013-06-19 20:11:00

标签: 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

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

为自己保留一些悲伤并使用更易于编写和解析的格式。 json library无需额外解析即可保存和加载数据:

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,您可以编写一个非常易读的结构。