You need to enable JavaScript to run this app. 如何使用Python从特定格式字符串中提取日期、星期及时间信息
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从特定格式字符串中提取日期、星期及时间信息

问题原因

你使用的原正则\d{2}[/ ]\d{2}[/ ]\d{4}仅适用于匹配类似04/05/2024、04 05 2024的日期格式,和你需要解析的Tue 04 May, 09:56 PM结构完全不匹配,因此无法得到正确结果。
另外原代码直接调用open()未手动关闭文件,存在资源泄漏风险,推荐使用with上下文管理器自动处理文件关闭。

推荐实现方案(使用datetime模块解析)

该方案无需手动处理字段提取,可直接得到结构化的日期时间对象,方便后续任意格式的转换和计算:

import re
from datetime import datetime

# 读取文件内容
with open("scan_results2.txt", "r", encoding="utf-8") as f:
    content = f.read()

# 匹配所有Last Update后的时间字符串
pattern = r"Last Update: ([A-Za-z]{3} \d{2} [A-Za-z]{3}, \d{2}:\d{2} [AP]M)"
time_str_list = re.findall(pattern, content)

parsed_result = []
for time_str in time_str_list:
    # 按指定格式解析为datetime对象
    # 格式符说明:%a=星期英文缩写 %d=两位日期 %b=月份英文缩写 %I=12小时制小时 %M=分钟 %p=AM/PM标识
    dt_obj = datetime.strptime(time_str, "%a %d %b, %I:%M %p")
    # 可按需补充年份,原格式无年份时strptime默认取1900年,示例补充为2024年
    dt_obj = dt_obj.replace(year=2024)
    
    # 提取所需信息
    parsed_info = {
        "完整日期": dt_obj.strftime("%Y-%m-%d"),
        "星期全称": dt_obj.strftime("%A"),
        "星期缩写": dt_obj.strftime("%a"),
        "24小时制时间": dt_obj.strftime("%H:%M"),
        "12小时制时间": dt_obj.strftime("%I:%M %p")
    }
    parsed_result.append(parsed_info)

# 输出结果
for info in parsed_result:
    print(info)
极简正则提取方案

如果你只需要直接提取各字段、不需要结构化的日期对象,可直接使用分组正则:

import re

with open("scan_results2.txt", "r", encoding="utf-8") as f:
    content = f.read()

# 分组匹配各字段:(星期缩写) (日期) (月份缩写), (时间) (AM/PM)
pattern = r"Last Update: ([A-Za-z]{3}) (\d{2}) ([A-Za-z]{3}), (\d{2}:\d{2}) ([AP]M)"
match_list = re.findall(pattern, content)

for week_abbr, day, month_abbr, time, period in match_list:
    print(f"星期:{week_abbr},日期:{day} {month_abbr},时间:{time} {period}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:54:02