Python读取CSV文件时反复出现ValueError错误该怎么解决?
错误根因
ValueError: invalid literal for int() with base 10: ' 1/11/2011'
触发报错的代码行birthYear = int(row[1] or 0)预期row[1]为纯数字格式的年份值,但实际读取到的是带前置空格的月/日/年格式日期字符串,int()函数无法直接将日期字符串转换为整数,因此抛出异常。
可落地解决方案
核对CSV字段索引,避免取错列
先运行调试代码确认各列对应的实际内容,确认出生年份字段对应的索引是否为1:import csv with open("你的CSV文件路径.csv", "r", encoding="utf-8") as f: reader = csv.reader(f) # 打印前3行表头+内容,确认列顺序 for i in range(3): print(next(reader))如果是取错列,将
row[1]替换为年份字段对应的正确索引即可。从日期字段提取年份
若row[1]确实为出生日期字段,先解析日期再提取年份:from datetime import datetime try: # 先去除字符串前后空格,再按对应日期格式解析 birth_date = datetime.strptime(row[1].strip(), "%m/%d/%Y") birthYear = birth_date.year except (ValueError, IndexError): # 解析失败时赋值默认值,可自定义调整 birthYear = 0增加异常捕获兜底
若CSV存在大量不规则脏数据,直接给转换逻辑加异常捕获,避免程序直接中断:try: birthYear = int(row[1].strip() or 0) except (ValueError, IndexError): birthYear = 0
内容的提问来源于stack exchange,提问作者BluPrints
相关产品推荐
相关产品推荐

