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

Python字符串转日期格式报错求助:sre_constants.error问题

解决字符串转YYYY-MM-DD日期格式的问题

嘿,这个报错的原因很明确——你写的代码里有两个关键问题:

  1. 重复使用了同一个格式占位符%Y:你的格式字符串'%m %d %Y %I:%Y%m%d'里出现了两次%Y,而strptime不允许重复定义同一个命名组(这里的%Y对应正则逻辑里的命名组),所以抛出了redefinition of group name 'Y'的错误。
  2. 格式字符串和输入字符串完全不匹配:你的输入是"April 18, 2018"(完整月份名+日期+年份),但格式字符串写的是%m(数字月份)、%I(12小时制小时)这些和输入无关的占位符,就算没有重复占位符的问题,也会解析失败。

正确的解决步骤

我们需要先用匹配输入格式的占位符解析字符串,再将解析后的时间元组格式化为你需要的YYYY-MM-DD格式:

import time

review_date = "April 18, 2018"
# 第一步:解析输入字符串为时间元组,用%B匹配完整月份名,%d匹配日期,%Y匹配四位年份
parsed_time = time.strptime(review_date, '%B %d, %Y')
# 第二步:将时间元组格式化为YYYY-MM-DD格式
formatted_date = time.strftime('%Y-%m-%d', parsed_time)

print(formatted_date)  # 输出结果:2018-04-18

关键格式占位符说明

  • %B:匹配完整的英文月份名称(比如April、January)
  • %d:匹配带前导零的两位日期(如果输入是April 8, 2018这种单数字日期,%d也能正常解析)
  • %Y:匹配四位年份(比如2018)

这样就能顺利把你的输入字符串转换成想要的YYYY-MM-DD格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:11:45