如何基于日期范围移除CSV文件中的指定行?
用Python按日期范围筛选CSV行
核心思路
- 读取目标CSV文件(注意你的文件用分号
;分隔,不是默认逗号) - 将字符串格式的日期转换为Python可识别的日期对象,方便做范围对比
- 设定需要保留的日期区间,过滤掉区间外的行
- 将筛选后的内容写入新CSV文件(不修改原文件,避免数据丢失)
完整代码示例
from datetime import datetime # 匹配CSV中的日期格式:日/月/年 时:分 date_format = "%d/%m/%Y %H:%M" # 自定义要保留的日期范围,示例为2022-10-18 00:00到2022-10-19 23:59 start_dt = datetime.strptime("18/10/2022 00:00", date_format) end_dt = datetime.strptime("19/10/2022 23:59", date_format) # 读取原文件并筛选内容 filtered_lines = [] with open("你的原始文件名.csv", "r", encoding="utf-8") as f: for line in f: clean_line = line.strip() if not clean_line: continue # 跳过空行 # 拆分日期和数值部分 date_str, value = clean_line.split(";") # 转换为日期对象 row_date = datetime.strptime(date_str, date_format) # 判断是否在目标范围内,符合则保留 if start_dt <= row_date <= end_dt: filtered_lines.append(clean_line) # 将筛选结果写入新文件 with open("筛选后的文件名.csv", "w", encoding="utf-8") as f: f.write("\n".join(filtered_lines))
适配你的需求的修改点
- 替换
你的原始文件名.csv和筛选后的文件名.csv为实际文件名 - 修改
start_dt和end_dt的日期值,确保格式与date_format一致(日/月/年 时:分) - 如果CSV有表头,在循环前添加
next(f)语句跳过表头行
内容的提问来源于stack exchange,提问作者xWee
相关产品推荐
相关产品推荐

