You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

按日期排序TXT文件中TODO任务行并写入新文件的技术需求

嘿,这个TODO列表排序的需求我帮你搞定啦!用Python就能轻松实现,两种排序场景都覆盖到了,一起来看看:

解决方案:用Python处理TODO列表排序

实现思路

  1. 读取原始txt文件,过滤掉空行避免无效处理;
  2. 从每行中提取创建日期完成日期作为排序依据(YYYY-MM-DD格式的字符串可以直接按字典序排序,和日期顺序完全一致);
  3. 按指定字段排序后,将结果写入新的txt文件。

完整代码

def sort_todo_file(input_path, output_path, sort_by='creation'):
    # 读取原始文件,过滤空行
    with open(input_path, 'r', encoding='utf-8') as f:
        lines = [line.strip() for line in f if line.strip()]
    
    # 定义排序键:提取对应日期字段
    def get_sort_key(line):
        # 拆分每行,前3个部分是优先级、创建日期、完成日期,剩下的是任务内容
        parts = line.split(maxsplit=3)
        if len(parts) >= 3:
            creation_date = parts[1]
            completion_date = parts[2]
            return creation_date if sort_by == 'creation' else completion_date
        # 格式异常的行默认排到最后
        return '9999-99-99'
    
    # 执行排序
    sorted_lines = sorted(lines, key=get_sort_key)
    
    # 写入新文件
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write('\n'.join(sorted_lines))
        f.write('\n')  # 末尾添加换行符

# ------------------- 使用示例 -------------------
# 按创建日期排序,生成新文件
sort_todo_file('你的输入文件名.txt', '按创建日期排序结果.txt', sort_by='creation')
# 按完成日期排序,生成新文件
sort_todo_file('你的输入文件名.txt', '按完成日期排序结果.txt', sort_by='completion')

使用说明

  1. 把代码里的你的输入文件名.txt替换成你实际的TODO文件路径(如果和脚本同目录直接写文件名,否则写完整路径比如C:/docs/todo.txt);
  2. 运行脚本后,会生成两个新文件,分别对应两种排序结果;
  3. 如果只需要其中一种排序,删掉另一条调用语句即可。

注意事项

  • 代码会自动跳过空行,不用担心文件里的空白内容影响结果;
  • 如果有格式异常的行(比如缺少日期字段),会被默认排到排序结果的最后,你可以修改return '9999-99-99'的值来调整它们的位置(比如改成'0000-00-00'就能放到最前面);
  • 使用utf-8编码读写,避免中文或特殊字符出现乱码问题。

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

火山引擎 最新活动