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

如何用Python脚本按最新时间排序文本文件内容?

问题分析与解决方案

现有代码的核心问题

你的代码把所有文本拆成独立单词后排序,完全丢失了名称-数值-时间的关联关系,最终输出只是一堆无序的数值拼接,和预期的表格结构完全不匹配。

正确实现思路与代码

要实现按最新时间排序的表格输出,需要先结构化存储数据,再按需求重组:

实现步骤

  1. 解析每行数据,提取名称、数值、时间三个字段
  2. 收集所有唯一时间,按从新到旧排序(HH:MM格式的时间字符串可直接按字典序比较)
  3. 建立每个名称对应各时间的数值映射表
  4. 格式化输出对齐的表格

完整代码

def sort_data(filename):
    # 存储结构化数据:{名称: {时间: 数值}}
    data = {}
    # 收集所有时间
    times = set()

    with open(filename, 'r') as infile:
        for line in infile:
            # 去除首尾空白后拆分字段
            parts = line.strip().split()
            if len(parts) != 3:
                continue  # 跳过无效行
            name, value, time = parts
            times.add(time)
            # 初始化名称对应的字典
            if name not in data:
                data[name] = {}
            data[name][time] = value

    # 时间按从新到旧排序
    sorted_times = sorted(times, reverse=True)
    # 保持名称的原始出现顺序
    sorted_names = list(data.keys())

    # 写入结果文件
    with open("result.txt", 'w') as outfile:
        # 写入表头
        header = f"{'Name':<12}" + ''.join(f"{t:<12}" for t in sorted_times)
        outfile.write(header + '\n')
        # 写入每行数据
        for name in sorted_names:
            line = f"{name:<12}"
            for time in sorted_times:
                line += f"{data[name].get(time, ''):<12}"
            outfile.write(line + '\n')

sort_data("myfile.txt")

代码说明

  • 使用with语句自动管理文件打开/关闭,避免资源泄漏
  • 用嵌套字典存储名称-时间-数值的关联关系,保证数据结构清晰
  • 对时间进行逆序排序,实现"最新时间在前"的需求
  • 用<12格式化字符串,保证每列宽度一致,输出对齐的表格

输出效果

运行后result.txt的内容将和你预期的格式完全一致:

Name        06:18      06:11      05:58      
ABC1234     -2.248     -2.348     -2.385     
1234DCE     -4.622     -3.427     -3.430     
98ACD12     13.356     11.883     12.574     
18DDD12     10.915     10.883     11.564     
453FGH2A    0.00       0.176      0.351      
A2DA21      -0.162     0.162      0.00       
8FF3EFA     -0.638     0.888      -0.720     

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:54:54