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

如何在Python中检查CSV文件第11列表头是否含指定词汇

多CSV文件表头判断与批量处理方案

核心思路

  1. 遍历目标目录下所有CSV文件
  2. 读取每个文件的表头行,提取第11列(注意Python索引从0开始,对应索引10)
  3. 检查该表头是否包含ABC、XYZ或SOS关键词
  4. 根据匹配结果执行对应后续函数

实现代码示例

方式一:使用Python标准库csv(低内存占用,适合大文件)

import csv
import os

# 定义待检测关键词
TARGET_KEYWORDS = ('ABC', 'XYZ', 'SOS')

# 示例后续处理函数,根据需求替换业务逻辑
def handle_abc(file_path):
    print(f"执行ABC专属逻辑: {file_path}")

def handle_xyz(file_path):
    print(f"执行XYZ专属逻辑: {file_path}")

def handle_sos(file_path):
    print(f"执行SOS专属逻辑: {file_path}")

def handle_default(file_path):
    print(f"执行通用逻辑: {file_path}")

# 遍历目标目录
csv_folder = "./your_csv_files"  # 替换为你的CSV文件目录
for file_name in os.listdir(csv_folder):
    if not file_name.endswith('.csv'):
        continue
    file_path = os.path.join(csv_folder, file_name)
    
    with open(file_path, 'r', newline='', encoding='utf-8') as f:
        reader = csv.reader(f)
        header = next(reader)  # 读取表头行
        
        # 先判断文件列数是否足够
        if len(header) < 11:
            print(f"警告: {file_name} 列数不足11,跳过")
            continue
        
        # 提取第11列表头,去除前后空格
        eleventh_col = header[10].strip()
        
        # 匹配关键词并执行对应函数
        if 'ABC' in eleventh_col:
            handle_abc(file_path)
        elif 'XYZ' in eleventh_col:
            handle_xyz(file_path)
        elif 'SOS' in eleventh_col:
            handle_sos(file_path)
        else:
            handle_default(file_path)

方式二:使用pandas(代码简洁,适合中小文件)

import pandas as pd
import os

# 示例处理函数
def process_abc(file_path):
    df = pd.read_csv(file_path)
    print(f"处理含ABC的文件: {file_path}")
    # 插入你的业务逻辑

def process_xyz(file_path):
    df = pd.read_csv(file_path)
    print(f"处理含XYZ的文件: {file_path}")
    # 插入你的业务逻辑

def process_sos(file_path):
    df = pd.read_csv(file_path)
    print(f"处理含SOS的文件: {file_path}")
    # 插入你的业务逻辑

csv_folder = "./your_csv_files"
for file_name in os.listdir(csv_folder):
    if not file_name.endswith('.csv'):
        continue
    file_path = os.path.join(csv_folder, file_name)
    
    # 仅读取表头,不加载全量数据,提升效率
    header = pd.read_csv(file_path, nrows=0).columns.tolist()
    
    if len(header) < 11:
        print(f"{file_name} 列数不足11,跳过")
        continue
    
    eleventh_col = header[10].strip()
    
    if 'ABC' in eleventh_col:
        process_abc(file_path)
    elif 'XYZ' in eleventh_col:
        process_xyz(file_path)
    elif 'SOS' in eleventh_col:
        process_sos(file_path)
    else:
        print(f"{file_name} 第11列表头无匹配关键词")

注意事项

  • 索引问题:Python是0索引,第11列对应索引10,不要混淆
  • 空格处理:表头可能存在前后空格,用strip()去除后再判断更准确
  • 大小写兼容:如果需要忽略大小写,可将表头转为小写后匹配,比如'abc' in eleventh_col.lower()
  • 编码适配:若CSV文件使用非UTF-8编码(如GBK),需调整open或pd.read_csv的encoding参数
  • 性能选择:大文件优先用csv库,仅读取表头行节省内存;中小文件用pandas代码更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:15:40