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

Python动态提取CSV指定区间行数据并按规则命名导出方案

Python动态提取CSV指定区间数据实现方案

核心适配逻辑

放弃硬编码行号的skiprows、固定切片iloc写法,通过动态匹配目标表头位置定位数据段,不受CSV前置说明行数量变动影响,自动适配不同版本的表结构。

前置依赖

先安装表格处理依赖库:

pip install pandas

完整实现代码

import pandas as pd
from datetime import datetime
import csv

# 基础配置
csv_file_path = "你的源CSV文件路径.csv"
target_headers = {"Deal ID", "Deal Name", "Origination Date", "Maturity Date"}
# 从表头行开始计算的总提取行数,对应需求中第5行(表头)到第8行的区间长度
total_extract_rows = 4

# 动态定位目标表头所在行索引
header_index = None
with open(csv_file_path, 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row_idx, row_content in enumerate(reader):
        cleaned_cells = {cell.strip() for cell in row_content if cell.strip()}
        if target_headers.issubset(cleaned_cells):
            header_index = row_idx
            break

if header_index is None:
    raise RuntimeError("源文件未匹配到目标表头,请检查字段是否完整")

# 从表头位置开始读取指定长度的数据
extract_df = pd.read_csv(
    csv_file_path,
    skiprows=header_index,
    nrows=total_extract_rows - 1
)

# 按规则生成动态文件名
current_year_month = datetime.now().strftime("%Y%m")
output_path = f"ExtensionReport{current_year_month}.csv"

# 保存结果,utf-8-sig编码避免Excel打开乱码
extract_df.to_csv(output_path, index=False, encoding='utf-8-sig')
print(f"提取完成,文件已保存至:{output_path}")

注:如果读取时提示编码错误,可将代码中encoding参数替换为gbk,适配国内常用的CSV导出编码格式。

原有方案报错原因

固定写skiprows=4、iloc[4:8]这类硬编码逻辑的容错性为0,只要源文件前置的说明、空行数量发生变动,表头位置偏移后就会把非表头文本识别为列名,后续切片、字段匹配时就会触发列不存在、数据类型错误等报错。动态匹配表头的方案只要目标字段名不变,无论前置内容行数怎么调整都能准确定位到目标数据段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:24:23