Python遍历CSV文件时,空单元格引发索引越界错误的解决办法
解决CSV遍历中空单元格引发的IndexError问题
方法1:遍历单元格时直接判断空值
如果用csv.reader读取文件,在循环里访问单元格前先检查是否为空,或按索引访问时先确认索引有效且单元格非空:
import csv with open('your_file.csv', 'r') as f: reader = csv.reader(f) for row in reader: # 遍历行内单元格,跳过空值(含纯空白字符的情况) for cell in row: if not cell.strip(): continue # 此处编写非空单元格的处理逻辑 print(cell) # 按索引访问指定列时,先检查索引范围和单元格内容 if len(row) > 2 and row[2].strip(): # 处理第3列(索引从0开始)的非空值 print(row[2])
方法2:使用csv.DictReader按列名访问,规避索引错误
用DictReader通过列名获取值,不存在的列或空值会返回None,从根源避免索引越界:
import csv with open('your_file.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: target_value = row.get('target_column_name') if target_value and target_value.strip(): # 处理非空值逻辑 print(target_value)
方法3:预处理整行,过滤空单元格后再遍历
如果只需处理行内非空单元格,可以先过滤掉空值再遍历:
import csv with open('your_file.csv', 'r') as f: reader = csv.reader(f) for row in reader: # 过滤掉空单元格(含纯空白字符) non_empty_cells = [cell for cell in row if cell.strip()] # 遍历过滤后的非空单元格 for cell in non_empty_cells: # 处理逻辑 print(cell)
注:如果你的空单元格是严格的空字符串,直接用if cell:判断即可;strip()是为了处理空格、制表符组成的"伪空"单元格。
内容的提问来源于stack exchange,提问作者Gwart
相关产品推荐
相关产品推荐

