Python 如何从文件中读取文本,然后按降序排序?
我刚刚开始学习Python,我已经为一个骰子游戏编写了代码,我已经将高分保存在一个文本文件中,最后,我想输出前5名的高分 我已经用以下结构将每个分数保存在文本文件中:name:score 下面是我写的代码:Python 如何从文件中读取文本,然后按降序排序?,python,python-3.x,Python,Python 3.x,我刚刚开始学习Python,我已经为一个骰子游戏编写了代码,我已经将高分保存在一个文本文件中,最后,我想输出前5名的高分 我已经用以下结构将每个分数保存在文本文件中:name:score 下面是我写的代码: file = open ("DiceGameScores","r") for line in file: file_line = line.split(": ") value = file_line[-1]
file = open ("DiceGameScores","r")
for line in file:
file_line = line.split(": ")
value = file_line[-1]
print (value)
scores = value
print (scores)
mylist = []
mylist.extend (scores)
print (mylist)
mylist.sort(reverse = True)
print (mylist[0:5])
file.close()
我已经输出了分数和要检查的列表,当我运行它时,我得到:
62
58
57
44
46
46
['4', '6', '\n']
['6', '4', '\n']
46是最近的最高分
程序将每个数字作为列表的值,并接受代码的新行(\n)部分
如何按顺序获得前5名的高分以及整数?使用pandas,您可以将文件读入数据框,然后显示分数,例如
import pandas as pd
df = pd.read_csv("data.txt",sep=':', header=None)
df.columns = ["name","score"]
df.sort_values("score", inplace=True, ascending=False)
df.iloc[:3]
显示前三名分数
name score
3 d 78
2 c 67
1 b 56
您需要的是在循环之外声明一个列表。然后将更新后的
分数添加到列表中。代码的其余部分随您的需要而定
file = open("DiceGameScores", "r")
mylist = []
for line in file:
file_line = line.split(": ")
value = file_line[1]
print(alue)
scores = value
print(scores)
mylist.append(scores)
print(mylist)
mylist.sort(reverse=True)
print(mylist[0:5])
你的两个主要问题是:
- 使用
扩展
- 。。。在循环之外
获取一个iterable(在这种情况下是文件中的字符串),并将其所有元素添加到列表中。这就是为什么您会得到['4','6']
。除此之外,你只会得到一个数字,因为你在循环之外这样做。您需要使用append
将整数相加,然后在循环内部执行此操作。您还应将分数转换为整数,以便进行适当排序:
mylist=[]
打开(“DiceGameScores”、“r”)作为文件:
对于文件中的行:
file_line=line.split(“:”)
值=文件\行[-1]
打印(值)
mylist.append(int(value))
打印(mylist)
mylist.sort(反向=True)
打印(mylist[:5])
注意使用打开文件-这是Python中处理文件的惯用方法。比使用打开/关闭
要好得多。拥抱它 请举例说明文本文件的外观。是否还需要输出名称?否则,将分数放入列表并对列表进行排序。@Daniel是的,我需要用score@M-Chen-3文本文件只是用户名,一个空格,然后是冒号,另一个空格然后是scoremylist.extend(scores)
应该是mylist.append(int(scores))
并在循环中移动