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

如何提取文件名中的日期时间并转换为datetime对象?

错误原因

  • 变量名不匹配:你定义的存储文件名的变量是my_string,但正则匹配时调用的是未定义的file_name,直接导致匹配结果为空
  • 正则表达式规则错误:你写的_(.\d+)_ab.txt只能匹配「下划线+任意单个字符+连续数字」的组合,无法匹配目标串里的-、u、m、s等字符,最终匹配返回None,调用group方法就会报错

完整实现代码

import re
import datetime

my_string = 'Afo_20211024-19u37m11s_ab.txt'
# 修正正则规则和调用的变量名,精准匹配时间部分
match_res = re.search(r"_(\d{8}-\d{2}u\d{2}m\d{2}s)_ab\.txt", my_string)
if match_res:
    time_str = match_res.group(1)
    # 按字符串格式解析为datetime类型对象
    dt_obj = datetime.datetime.strptime(time_str, "%Y%m%d-%Hu%Mm%Ss")
    # 如果需要输出为指定格式的字符串,调用strftime即可
    formatted_str = dt_obj.strftime("%Y-%m-%d %H:%M:%S")
    print(formatted_str) # 输出结果:2021-10-24 19:37:11
else:
    print("文件名未匹配到符合规则的时间信息")

实现说明

  • 正则r"_(\d{8}-\d{2}u\d{2}m\d{2}s)_ab\.txt"严格匹配8位日期、分隔符-、2位小时、标识u、2位分钟、标识m、2位秒、标识s的固定格式,避免误匹配
  • 先判断匹配结果是否为空再调用group方法,避免匹配失败时报错
  • strptime的格式符和时间字符串一一对应:%Y对应4位年份、%m对应2位月份、%d对应2位日期、%H对应2位小时、%M对应2位分钟、%S对应2位秒,解析后直接得到你需要的datetime类型对象

内容的提问来源于stack exchange,提问作者Al-Andalus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:04