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

如何在Python字符串中识别多个日期并筛选最早、最晚日期?

解决datefinder无法识别dd/mm/yyyy格式日期的问题

你的问题出在datefinder默认的日期解析逻辑更偏向美式日期格式(mm/dd/yyyy),像23/01/2023这种日/月/年的格式会因“23超过月份最大取值12”被判定为无效,导致无法识别。

下面是修正后的代码,既能正确识别日/月/年格式的日期,还能提取出最早和最晚的日期:

import re
from datetime import datetime

string = "/plot 23/01/2023 24/02/2021 /cmd"

# 匹配所有xx/xx/xxxx格式的日期字符串
date_pattern = r'\b\d{2}/\d{2}/\d{4}\b'
date_strings = re.findall(date_pattern, string)

# 将字符串转换为datetime对象
dates = []
for date_str in date_strings:
    try:
        # 优先按日/月/年格式解析
        date_obj = datetime.strptime(date_str, '%d/%m/%Y')
        dates.append(date_obj)
    except ValueError:
        # 兼容美式月/日/年格式(可选)
        try:
            date_obj = datetime.strptime(date_str, '%m/%d/%Y')
            dates.append(date_obj)
        except ValueError:
            continue

if dates:
    Date1 = min(dates)
    Date2 = max(dates)
    print(f"最早日期: {Date1.strftime('%d/%m/%Y')}")
    print(f"最晚日期: {Date2.strftime('%d/%m/%Y')}")
else:
    print("no date in string")

代码说明:

  • 用正则表达式\b\d{2}/\d{2}/\d{4}\b精准提取所有符合日期格式的字符串
  • 优先按%d/%m/%Y(日/月/年)解析,失败后尝试%m/%d/%Y(月/日/年),兼顾不同格式兼容性
  • 直接用min()和max()获取最早、最晚的日期对象

如果一定要用datefinder,需要自定义日期匹配规则,不过步骤相对繁琐,不如上述方法直接可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:40:57