You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python对TXT文件中的高分列表按数值降序排序?

解决TXT文件高分列表降序排序的问题

这个问题我之前做游戏分数存储时也踩过坑!核心原因是字符串排序和整数排序的逻辑完全不一样——字符串是按单个字符的ASCII码值对比的,所以"9"会排在"15"前面,因为'9'的ASCII值(57)比'1'(49)大,程序根本不会去识别后面的数字。

下面是具体的解决流程,分三个关键环节处理:

1. 读取TXT数据并转换为整数列表

假设你的TXT文件是每行存一个高分(比如scores.txt内容是:

15
9
22
7

),读取时要把每个字符串转成整数,这样才能按数值大小排序:

# 读取文件,把每行的字符串分数转成整数
with open("scores.txt", "r") as f:
    # 跳过空行,只处理数字行
    scores = [int(line.strip()) for line in f if line.strip().isdigit()]

2. 对整数列表做降序排序

这时候就可以放心用sort(reverse=True)了,因为是整数排序,完全按数值大小来:

scores.sort(reverse=True)

3. 将排序后的整数转回字符串写入文件

排序完成后,把每个整数转回字符串,再加换行符写回文件:

with open("scores.txt", "w") as f:
    for score in scores:
        f.write(f"{score}\n")

特殊情况处理:如果分数带附加信息(比如"玩家名:分数")

如果你的TXT格式是PlayerA:15这种,得先拆分出分数部分再转换,示例代码如下:

# 读取带玩家信息的分数行
with open("scores.txt", "r") as f:
    score_entries = []
    for line in f:
        line = line.strip()
        if not line:
            continue
        # 拆分玩家名和分数
        name, score_str = line.split(":")
        if score_str.isdigit():
            # 把分数转成整数,和原行一起存,方便排序后恢复格式
            score_entries.append( (-int(score_str), line) )

# 按分数降序排序(用负号实现降序,或者用key参数)
score_entries.sort()
# 提取排序后的原行内容
sorted_lines = [entry[1] + "\n" for entry in score_entries]

# 写入文件
with open("scores.txt", "w") as f:
    f.writelines(sorted_lines)

额外小提示

  • 如果分数是用逗号/空格分隔在一行的(比如15,9,22,7),读取时先按分隔符拆分再转整数:
    with open("scores.txt", "r") as f:
        content = f.read().strip()
        scores = [int(s) for s in content.split(",") if s.isdigit()]
    
  • 操作前建议备份原文件,避免处理失误丢失数据。

内容的提问来源于stack exchange,提问作者ChrisEzri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:38