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

如何解决CSV按User_ID升序排序时的表头及排序逻辑问题?

解决CSV排序的两个问题

这里给你修正后的代码,直接解决表头位置错误、ID按字符串排序的问题:

import csv

# 用with语句处理文件,自动关闭更省心
with open("file.csv", 'r') as file:
    csv_reader = csv.reader(file, delimiter=';')
    # 先把表头读出来
    header = next(csv_reader)
    # 按User_ID的数值大小排序,把字符串转成整数再比较
    sorted_rows = sorted(csv_reader, key=lambda row: int(row[0]))
    
    # 先输出表头,再输出排序后的内容
    print(';'.join(header))
    for row in sorted_rows:
        print(';'.join(row))

改动说明

  1. 表头位置问题:原代码只读取了表头却没有输出,现在先打印表头,再遍历输出排序后的行,自然就把表头固定在文件顶部了。
  2. 排序逻辑错误:之前直接拿User_ID的字符串比较,计算机只会按字符顺序判断(比如"13000"的首字符"1"比"2000"的"2"小,所以排前面)。改成int(row[0])后,就会按数值大小排序,13000就会正确排在9999之后。

如果需要把结果保存为新文件而非打印,替换掉print部分即可:

# 写入到新的排序后文件
with open("sorted_file.csv", 'w', newline='') as out_file:
    csv_writer = csv.writer(out_file, delimiter=';')
    csv_writer.writerow(header)
    csv_writer.writerows(sorted_rows)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:50:29