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
相关产品推荐
相关产品推荐

