如何在Python中检查CSV文件第11列表头是否含指定词汇
多CSV文件表头判断与批量处理方案
核心思路
- 遍历目标目录下所有CSV文件
- 读取每个文件的表头行,提取第11列(注意Python索引从0开始,对应索引
10) - 检查该表头是否包含
ABC、XYZ或SOS关键词 - 根据匹配结果执行对应后续函数
实现代码示例
方式一:使用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
相关产品推荐
相关产品推荐

