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

如何在Python中按指定顺序对文本文件的三列进行排序?

解决多列文本排序问题

嘿,我来帮你搞定这个多列排序的问题!其实核心思路很简单——咱们不需要纠结原数据是不是元组,只要给排序函数构造一个排序字段的元组就行,具体步骤如下:

  • 先读取文本文件内容,把每行拆分成对应的字段列表;
  • 用sort()函数的key参数,通过lambda表达式返回按排序优先级排列的字段元组;
  • 最后把排序后的内容写回新文件。

假设你的文本格式示例

Red NewYork 5
Blue Boston 3
Red NewYork 2
Blue Chicago 7

完整代码实现

# 读取目标文件,处理每行内容
with open("your_input_file.txt", "r") as f:
    # 跳过空行,同时将每行按空格拆分为字段列表
    lines = [line.strip().split() for line in f if line.strip()]

# 执行排序:按Team_Color→Team_Hometown→Number_of_Wins依次升序
# 注意:Number_of_Wins要转成整数,避免字符串排序的错误(比如"10"会比"2"小)
lines.sort(key=lambda x: (x[0], x[1], int(x[2])))

# 将排序后的内容写入新文件
with open("sorted_output_file.txt", "w") as f:
    for line in lines:
        f.write(" ".join(line) + "\n")

关键细节说明

  • 这里的lambda表达式lambda x: (x[0], x[1], int(x[2]))是核心:它会为每一行生成一个排序用的元组,元组内的元素顺序就是你的排序优先级,和原数据类型完全无关;
  • 如果你的列索引和示例不同,只要调整x后的下标即可(比如Number_of_Wins是第3列就改成int(x[3]));
  • 如果文件有表头(比如第一行是字段名),可以单独提取表头再排序:
with open("your_input_file.txt", "r") as f:
    header = f.readline().strip()
    lines = [line.strip().split() for line in f if line.strip()]

lines.sort(key=lambda x: (x[0], x[1], int(x[2])))

with open("sorted_output_file.txt", "w") as f:
    f.write(header + "\n")
    for line in lines:
        f.write(" ".join(line) + "\n")

这样就能完美实现你要的多字段升序排序啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:21:12