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

Python提取字符串日期并转换格式(yyyy-mm-dd转yyyy/mm/dd)遇错求助

问题

我尝试从字符串中提取日期,并将日期格式从yyyy-mm-dd转换为yyyy/mm/dd,但操作出现错误,需要技术指导。

以下是我的代码:

import re
import datetime

str = "2017/09/15 07:11:00"

x = re.match( r'([^\s]+)',str)
new_x = datetime.datetime.strptime("re.match( r'([^\s]+)',str)", "%Y/%m/%d").strftime("%Y-%m-%d")

print(x)
print(new_x)

(附:代码及错误类型截图)

错误分析与修复

核心问题

  • 未正确使用正则匹配结果:你调用了re.match但没有提取匹配到的实际日期字符串,反而把re.match的代码片段当成字符串传给strptime,直接导致日期解析失败。
  • 格式转换逻辑混淆:原始字符串是yyyy/mm/dd格式,需要先按该格式解析日期,再转换为yyyy-mm-dd格式,代码里的格式参数对应关系错误。

修复后的代码

import re
import datetime

# 避免使用Python关键字`str`作为变量名
input_str = "2017/09/15 07:11:00"

# 提取日期部分并获取匹配到的字符串
match_result = re.match(r'([^\s]+)', input_str)
if match_result:
    date_segment = match_result.group(1)
    # 按原始格式解析,再转换为目标格式
    converted_date = datetime.datetime.strptime(date_segment, "%Y/%m/%d").strftime("%Y-%m-%d")
    print(converted_date)
else:
    print("未匹配到有效日期")

更简洁的实现

如果字符串格式固定,日期始终位于开头且以空格分隔,无需使用正则,直接分割字符串即可:

import datetime

input_str = "2017/09/15 07:11:00"
# 按空格分割取第一部分作为日期字符串
date_segment = input_str.split()[0]
converted_date = datetime.datetime.strptime(date_segment, "%Y/%m/%d").strftime("%Y-%m-%d")
print(converted_date)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:45:37