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

Python处理TXT文件时如何用line.startswith实现行首日期区间筛选

日期区间筛选功能实现方案

实现思路

  • 导入Python标准库datetime处理日期格式转换与比较
  • 提前定义需要的日期筛选区间起止值
  • 读取每一行时先提取行首的日期字符串,转换为datetime对象后判断是否落在目标区间内
  • 增加异常兼容逻辑,自动过滤行首不符合日期格式的无效行
  • 推荐使用with上下文管理器操作文件,自动处理资源释放,无需手动调用close()方法,避免漏关文件的问题

完整改进代码

import datetime

# 自定义筛选的日期区间,格式为 年,月,日
start_date = datetime.date(2021, 1, 1)
end_date = datetime.date(2021, 12, 31)

# 上下文管理器自动管理文件资源
with open('XXXXXX.txt', 'r', encoding="ISO-8859-1") as read_file, \
     open('XXXXXX-Update.txt', 'w', encoding="ISO-8859-1") as write_file:
    for line in read_file:
        # DD/MM/YYYY格式日期共10个字符,跳过长度不足的行
        if len(line) < 10:
            continue
        date_str = line[:10]
        try:
            # 转换行首日期字符串为可比较的date对象,%d/%m/%Y对应「日/月/四位年」格式
            line_date = datetime.datetime.strptime(date_str, "%d/%m/%Y").date()
        except ValueError:
            # 行首不符合日期格式的行直接跳过
            continue
        # 判断日期是否落在目标区间内
        if start_date <= line_date <= end_date:
            print(line, end='') # end参数避免重复打印换行
            write_file.write(line)

参数调整说明

  • 按需修改start_date和end_date的赋值即可更换筛选区间,比如要筛选2022年3月1日到2022年6月30日的内容,就把起止值改为datetime.date(2022,3,1)和datetime.date(2022,6,30)即可
  • 如果原文件的日期格式发生变化,同步修改datetime.datetime.strptime中的格式符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:54:08