Python文件名提取时间

专栏导读

在这里插入图片描述
在这里插入图片描述

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

1、背景

  • 我们有时候需要从文件名中提取时间,以便用某些唯一字段进行匹配,在匹配的时候,可以匹配到对应时间点的数据,所以这时候我们需要利用Python+re正则表达式提取出文件名中包含的时间,且能够自动添加这天的开始时间以及结束时间.

2、库的安装

用途安装
本文全是内置库本文全是内置库无需安装

3、核心代码

  • re正则表达

pattern = r"(\d{4}-\d{2}-\d{2}(?:-\d{2}-\d{2}-\d{2})?)_(\d{4}-\d{2}-\d{2}(?:-\d{2}-\d{2}-\d{2})?)|(\d{4}-\d{2}-\d{2})"
  • 自动添加时间段

start_time = datetime.strptime(start_time_str, "%Y-%m-%d-%H-%M-%S")
end_time = datetime.strptime(end_time_str, "%Y-%m-%d-%H-%M-%S")

4、完整代码

# -*- coding: UTF-8 -*-
'''
@Project :测试 
@File    :测试.py
@IDE     :PyCharm 
@Author  :小庄(278865463@qq.com)
@Date    :2024/10/22 11:06 
'''

import os
import re
from datetime import datetime

# 文件列表
files = [
    "报价数据/xx报价/隔日达/xx_隔日达_2024-06-20_2024-07-09.xlsx",
    "报价数据/xx报价/隔日达/xx_隔日达_2024-08-30_2024-09-01.xlsx",
    "报价数据/xx报价/隔日达/xx_隔日达_2024-09-02-00-00-00_2024-09-02-13-30-59.xlsx",
    "报价数据/xx报价/隔日达/xx_隔日达_2024-09-02-13-31-00_2024-09-02-23-59-59.xlsx",
    "报价数据/xx报价/隔日达/xx_隔日达_2024-09-03.xlsx"
]

def extract_time_range(file_name):
    # 匹配带有两个日期的情况 或 单个日期的情况
    pattern = r"(\d{4}-\d{2}-\d{2}(?:-\d{2}-\d{2}-\d{2})?)_(\d{4}-\d{2}-\d{2}(?:-\d{2}-\d{2}-\d{2})?)|(\d{4}-\d{2}-\d{2})"
    match = re.search(pattern, file_name)
    if match:
        if match.group(3):  # 处理单个日期
            date_str = match.group(3)
            start_time = datetime.strptime(date_str, "%Y-%m-%d")
            end_time = start_time
            # 自动补全为当天的 00:00:00 到 23:59:59
            return start_time.replace(hour=0, minute=0, second=0), end_time.replace(hour=23, minute=59, second=59)
        else:
            start_time_str, end_time_str = match.groups()[:2]
            # 如果时间中没有小时分钟秒,补充 00:00:00 或 23:59:59
            if len(start_time_str) == 10:
                start_time_str += "-00-00-00"
            if len(end_time_str) == 10:
                end_time_str += "-23-59-59"
            # 转换为标准时间格式
            start_time = datetime.strptime(start_time_str, "%Y-%m-%d-%H-%M-%S")
            end_time = datetime.strptime(end_time_str, "%Y-%m-%d-%H-%M-%S")
            return start_time, end_time
    return None, None

def format_time_range(start_time, end_time):
    start_formatted = start_time.strftime("%Y-%m-%d %H:%M:%S")
    end_formatted = end_time.strftime("%Y-%m-%d %H:%M:%S")
    return f"{start_formatted}{end_formatted}"

# 提取和格式化每个文件的时间范围
for idx, file in enumerate(files, 1):
    start_time, end_time = extract_time_range(file)
    if start_time and end_time:
        print(f"{idx}: {format_time_range(start_time, end_time)}")
    else:
        print(f"{idx}: 无法提取时间范围")

  • 输出

1: 2024-06-20 00:00:002024-07-09 23:59:59
2: 2024-08-30 00:00:002024-09-01 23:59:59
3: 2024-09-02 00:00:002024-09-02 13:30:59
4: 2024-09-02 13:31:002024-09-02 23:59:59
5: 2024-09-03 00:00:002024-09-03 23:59:59

更多关于时间处理的文章

文章链接
Python利用【chinese_calendar】生成当前日期的前两日(可自定义)自动跳过法定节假日(包括调休)https://blog.csdn.net/weixin_42636075/article/details/138659843
Python给定开始日期年月与结束日期年月—生成每月的第一天与最后一天https://blog.csdn.net/weixin_42636075/article/details/133753366
Python将日期的月和日转为小数https://blog.csdn.net/weixin_42636075/article/details/130293102
Python对日期范围自动补充https://blog.csdn.net/weixin_42636075/article/details/130285850
Python判断某一个日期是否在自定义日期范围内https://blog.csdn.net/weixin_42636075/article/details/130242719
Python每日一个知识点6----输出两个时间段内的所有日期https://blog.csdn.net/weixin_42636075/article/details/129348827
python判断日期是否是休息日,如果是,就往后加,一直加到非休息日https://blog.csdn.net/weixin_42636075/article/details/126843510
Python 关于日期相减 获得两个日期的天数差https://blog.csdn.net/weixin_42636075/article/details/126788469
Python获取前一天的日期,前一个月的第一天,前一个月的最后一天,当天日期、当月第一天https://blog.csdn.net/weixin_42636075/article/details/126070444

总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一晌小贪欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>