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

使用Python datetime模块strptime方法时报ValueError如何解决?

报错原因
  • 核心触发逻辑为datetime.strptime()方法接收到的待转换内容与指定的%Y-%m-%d日期格式不匹配,报错信息明确显示当前传入的待转换内容是字符串A,完全不符合年-月-日的格式要求。
  • 结合代码逻辑排查,最高概率的诱因是遍历对象写错:当前代码循环遍历的是header_row(表头行),表头第三列的内容就是字段名A,并非实际的业务日期数据,属于误将表头当做数据行遍历的错误。
  • 若确认遍历对象是数据行仍触发报错,则说明源数据存在脏数据,存在部分行数据缺失、错位的情况,导致第三列内容不是预期的日期格式。
解决方案
  1. 修正遍历逻辑,跳过表头行仅遍历实际数据
    如果使用csv模块读取文件,需单独读取表头后再遍历后续数据行,示例逻辑如下:
import csv
from datetime import datetime

dates, highs = [], []
with open('你的数据文件路径.csv', 'r') as f:
    reader = csv.reader(f)
    header_row = next(reader) # 单独读取表头,不参与数据处理
    for row in reader:
        # 后续数据处理逻辑
  1. 新增异常捕获逻辑兼容脏数据
    避免单条格式异常的数据导致整个程序终止,同时修正原代码第一行变量名不匹配的问题(原代码写的是date, highs = [], [],后续追加数据用的是dates,会触发NameError),完整修正后的代码如下:
from datetime import datetime
import csv

dates, highs = [], []
with open('你的数据文件路径.csv', 'r') as f:
    reader = csv.reader(f)
    next(reader) # 跳过表头
    for row in reader:
        try:
            current_date = datetime.strptime(row[2], '%Y-%m-%d')
            high = int(row[5])
        except ValueError:
            # 格式异常的行直接跳过,也可自行增加日志打印异常行信息便于排查
            continue
        dates.append(current_date)
        highs.append(high)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:45:02