求助:按日期拆分CSV文件为单个日期独立文件
按DATE列拆分CSV文件的解决方案
下面提供两种实用的解决方案,适配不同操作场景:
1. Python脚本实现(跨平台通用)
适合熟悉Python的用户,逻辑清晰且易于调整:
import csv from collections import defaultdict # 替换为你的实际CSV文件路径 input_file = "your_input.csv" # 存储每个日期对应的文件对象与表头写入状态 date_files = defaultdict(lambda: {'file': None, 'header_written': False}) try: with open(input_file, mode='r', encoding='utf-8') as infile: reader = csv.DictReader(infile, delimiter=';') header = reader.fieldnames for row in reader: date_str = row['DATE'] file_info = date_files[date_str] if not file_info['file']: # 创建对应日期的输出文件 output_filename = f"{date_str}.csv" file_info['file'] = open(output_filename, mode='w', encoding='utf-8', newline='') writer = csv.DictWriter(file_info['file'], fieldnames=header, delimiter=';') writer.writeheader() file_info['header_written'] = True else: writer = csv.DictWriter(file_info['file'], fieldnames=header, delimiter=';') writer.writerow(row) finally: # 关闭所有打开的文件 for info in date_files.values(): if info['file']: info['file'].close()
使用说明:
- 将
your_input.csv替换为你实际的CSV文件路径 - 运行脚本后,当前目录会生成以每个DATE值命名的独立CSV文件
- 自动处理表头,确保每个输出文件都包含完整字段名
2. 命令行awk工具实现(Linux/macOS/WSL)
适合熟悉命令行的用户,无需编写脚本直接执行:
awk -F';' ' NR==1 {header=$0; next} { filename=$2".csv" if (!seen[filename]++) { print header > filename } print >> filename }' your_input.csv
使用说明:
-F';'指定CSV的分隔符为分号NR==1捕获表头行,后续行处理时自动判断是否需要写入表头$2对应DATE列(awk列索引从1开始,若DATE不是第二列请调整数字)- 替换
your_input.csv为实际文件路径,执行后直接生成目标文件
内容的提问来源于stack exchange,提问作者Sven Lorenzen
相关产品推荐
相关产品推荐

