Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:读取包含(字母和数字)的txt文件并更新数字_Python - Fatal编程技术网

Python:读取包含(字母和数字)的txt文件并更新数字

Python:读取包含(字母和数字)的txt文件并更新数字,python,Python,这些是文本文件中的行 Sponge B - 14 Squid W - 12 Patrick S - 9 Mr K - 19 我怎样才能做到 它变成这样: 那么最高的数字排在第一位 Mr K - 19 Sponge B - 14 Squid W - 12 Patrick S - 9 另外,玩家可以再次玩游戏,在这种情况下,他的高分也应该更新。如何读取结尾的数字,并替换为新分数 另外,如果K先生得到19,20,21,我希望他每次参加考试时都能得到平均值,并且接近最接近的整数,我该怎么做?(在本例

这些是文本文件中的行

Sponge B - 14
Squid W - 12
Patrick S - 9
Mr K - 19
我怎样才能做到

它变成这样: 那么最高的数字排在第一位

Mr K - 19
Sponge B - 14
Squid W - 12
Patrick S - 9
另外,玩家可以再次玩游戏,在这种情况下,他的高分也应该更新。如何读取结尾的数字,并替换为新分数

另外,如果K先生得到19,20,21,我希望他每次参加考试时都能得到平均值,并且接近最接近的整数,我该怎么做?(在本例中为20。)

我可以读取文件,附加和写入内容。我只是不知道如何通过读取并排序来对文件进行排序。

读取数据 您的数据是CSV数据。嗯,主要是因为分数之间用
'-'
分隔。你可以很容易地读回:

with open('/tmp/d.txt', 'rt') as infile:
    reader = csv.reader(infile, delimiter='-')
    scores = dict((key.strip(), int(value)) for (key, value) in reader)
    print(scores)
制作:

{'Squid W': 12, 'Sponge B': 14, 'Mr K': 19, 'Patrick S': 9}
修饰资料 现在,由于您的数据存储在字典中,您可以毫无困难地更新任何分数。例如,如果您需要在
Mr K
中添加1点:

scores['Mr K'] += 1
分类 关于按值排序,您可以使用以下函数:

import operator
final_data = sorted(scores.items(),
                    key=operator.itemgetter(1),
                    reverse=True)
print(final_data)
导致:

 [('Mr K', 20), ('Sponge B', 14), ('Squid W', 12), ('Patrick S', 9)]
回信 您必须使用正确的格式输出每条记录
-

在这里,我正是为了这个目的:

with open('/tmp/out.txt', 'wt') as outfile:
    for key,value in final_data:
        outfile.write("{} - {}\n".format(key,value))

您可以将整个文件读入内存,按您想要的顺序对行进行排序,然后重新写入文件吗?
text
文件不是一个好的选择。在这种情况下,您可以考虑使用类似于
csv
的内容或数据库来存储文件game@AleksanderLidtke你是什么意思?@KasraAD噢,使用csv或数据库会比使用文本文件更简单吗?如果是的话,我会试试看。顺便说一下,我还没学会them@Wdoctor123,您可以使用
打开(“…”)加载内存中的所有行。readlines()
。然后编辑数字并平均它们?非常感谢您的支持help@Wdoctor123我已经解释了如何在答案中排序。至于“平均数字”,我并不十分清楚。但我认为你现在有足够的信息回去工作;)“{}-{}\n”是什么意思?哦,对不起,让我说清楚一点。假设K先生第二次或第三次参加比赛,我希望他的第一、第二和第二场比赛的得分是平均的。所以当他做第二次时,第一次和第二次得分平均并更新得分。那么如果我想做平均,我应该做得分['Mr K']=(得分+新闻核心)/2吗?