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

如何在Python中从字典提取日期并转为DD-MM-YYYY格式?

解决从文件名提取日期并转换格式的问题

嘿,别发愁啦!正则刚上手确实容易摸不着头脑,我来帮你一步步搞定这个需求~

分析你的需求

你的字典键都是类似Shop - Produce - 20180212.xlsx的文件名,里面的日期是8位数字的YYYYMMDD格式,我们需要把它提取出来,转换成DD-MM-YYYY格式。

正则表达式怎么写?

针对你的文件名格式,最简单有效的正则是匹配连续的8位数字:r'(\d{8})'。

  • \d:匹配任意数字
  • {8}:指定正好匹配8个数字
  • 括号():把这8位数字标记为捕获组,方便后续用group(1)提取出来

如果想更精准(避免文件名里其他8位数字的干扰),可以写更严格的正则:r'- (\d{8})\.xlsx',它会专门匹配- 后面、.xlsx前面的8位数字,完全贴合你的文件名结构。

完整代码示例

结合日期转换的逻辑,完整代码如下:

import re
from datetime import datetime

SHOPS_AND_ORDERNUM = { 
    'Shop - Produce - 20180212.xlsx': 1334, 
    'Shop - Organic - 20180223.xlsx': 8893, 
    'Shop - Fresh - 20180226.xlsx': 5557, 
    'Shop - Dairy - 20180227.xlsx': 3870 
}

for filename, order_num in SHOPS_AND_ORDERNUM.items():
    # 用精准的正则匹配日期
    match = re.search(r'- (\d{8})\.xlsx', filename)
    if match:
        # 提取捕获组里的日期字符串
        raw_date = match.group(1)
        # 先把字符串解析为datetime对象,再格式化为DD-MM-YYYY
        formatted_date = datetime.strptime(raw_date, '%Y%m%d').strftime('%d-%m-%Y')
        # 这里可以根据你的需求处理结果,比如打印或者存储
        print(f"店铺文件名: {filename} | 订单数: {order_num} | 格式化日期: {formatted_date}")

代码解释

  1. 正则匹配:re.search(r'- (\d{8})\.xlsx', filename)会在每个文件名里找到符合规则的日期部分,返回匹配对象。
  2. 提取日期:match.group(1)获取捕获组里的8位日期字符串(比如20180212)。
  3. 格式转换:
    • datetime.strptime(raw_date, '%Y%m%d'):把字符串按YYYYMMDD格式解析成datetime对象。
    • .strftime('%d-%m-%Y'):把datetime对象转换成DD-MM-YYYY格式的字符串(比如12-02-2018)。

运行这段代码,你就能得到每个文件对应的格式化日期啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:04:46