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

Python使用strptime转换日期时报ValueError空字符串不匹配格式错误

问题原因分析

错误信息明确指出传入strptime的时间数据是空字符串'',你观测到的正常转换输出仅为带合法日期值的条目,遍历过程中存在某条/多条数据的date字段为空、为None、带多余空格或非预期缺失,这部分异常条目未被你做前置打印,因此没有被观测到。

排查步骤
  • 第一步:在日期转换代码前新增打印逻辑,输出所有待处理的date值和对应条目的唯一标识(如ID、行号),定位空值所属的源数据条目
    示例调试代码:
    print(f"当前处理条目标识:{item.get('id', '无标识')},待转换date值:{repr(date)}")
    new_date = datetime.datetime.strptime(str(date), '%Y-%m-%d').strftime('%d/%m/%y')
    
    使用repr()可以清晰识别空字符串、前后空格、None转字符串后的'None'这类不可见异常值。
  • 第二步:校验源数据集完整性,确认空值是业务允许的合法异常值,还是数据爬取/读取逻辑错误导致的字段值缺失。
解决方案

场景1:空值为业务允许的异常值

新增前置校验或异常捕获逻辑,给空值设置业务默认值,避免程序中断:

# 方法1:前置校验
date_str = str(date).strip()
if date_str:
    new_date = datetime.datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%y')
else:
    new_date = "" # 也可设置为'未知'等自定义默认值

# 方法2:异常捕获(兼容所有格式不匹配的异常场景)
try:
    date_str = str(date).strip()
    new_date = datetime.datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%y')
except ValueError:
    # 可新增日志记录异常条目信息,方便后续回溯
    new_date = ""

场景2:空值为数据读取错误

排查数据读取/解析逻辑,确认是否存在字段匹配错误、部分异常条目结构和正常条目不一致的问题,修复读取逻辑拿到正确的date值后再做格式转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:27:03