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

Python使用csv.DictReader读取CSV时如何指定第n行作为表头

解决方案

csv.DictReader本身没有内置指定表头起始行的参数,你可以通过先跳过前序无效行的方式实现需求,操作非常简单,而且不会额外占用内存。

固定表头行号的场景

如果你明确知道表头在第n行(行号从1开始计数),先手动跳过前n-1行再初始化DictReader即可:

import csv

# 假设表头在第5行,按需修改这个值
header_row_num = 5
with open(filename, 'r') as f:
    # 跳过前header_row_num-1行无效内容
    for _ in range(header_row_num - 1):
        next(f)
    # 此时文件读取指针刚好指向表头行,直接传入DictReader即可
    reader = csv.DictReader(f)
    for row in reader:
        # row就是以表头行内容为key的字典
        print(row)

表头位置不固定的场景

如果你不知道表头具体在第几行,只有表头的特征规则(比如必须包含指定字段),可以逐行匹配到表头后再初始化DictReader:

import csv

with open(filename, 'r') as f:
    fieldnames = None
    for line in f:
        # 自定义表头判断逻辑,这里以表头必须包含id、name两个字段为例
        cols = line.strip().split(',')
        if {'id', 'name'}.issubset(set(cols)):
            fieldnames = cols
            break
    # 直接把匹配到的表头传给fieldnames参数,后续行自动按这个表头生成字典
    reader = csv.DictReader(f, fieldnames=fieldnames)
    for row in reader:
        print(row)
  • 两种方案都不会全量加载文件,即使是GB级的大CSV也能正常运行
  • 如果CSV的分隔符不是逗号,可以给DictReader加上delimiter参数指定,比如delimiter='\t'对应制表符分隔的文件
  • 如果CSV格式复杂(存在字段内容含逗号、带引号等情况),表头判断阶段可以用csv.reader来解析每一行,避免手动split出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:06:04