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

Python如何从含am/pm格式的字符串中提取指定时间范围?

问题原因说明

你之前的两个尝试存在以下问题:

  • 第一种正则仅匹配带分钟后缀(:xx)的时间,无法命中9 pm这类无分钟的时间格式
  • 第二种正则虽然兼容了无分钟时间,但只能单独捕获单个时间点,无法直接拼接为完整的时间范围,也没有处理时间与am/pm之间的空格、两段时间中间的分隔符

实现方案

你可以通过正则先捕获所有符合规则的单个时间,再两两拼接为范围即可,代码示例如下:

import re

# 样例输入
time_strs = [
    'Mon-Thu, Sun 11:30 am - 9 pm',
    'Sat-Sun 9:30 am - 9:30 pm',
    'Sat 5 pm - 9 pm'
]

# 正则规则:(?i)忽略大小写,匹配1-2位小时+可选的:xx分钟+空格+am/pm
pattern = re.compile(r"(?i)\d{1,2}(?::\d{2})? [ap]m")

result = []
for st in time_strs:
    # 提取所有符合规则的时间,去掉空格后两两拼接
    times = [t.replace(" ", "") for t in pattern.findall(st)]
    if len(times) >= 2:
        result.append(f"{times[0]}-{times[1]}")

# 输出结果
for item in result:
    print(item)

运行输出和你预期完全一致:

11:30am-9pm
9:30am-9:30pm
5pm-9pm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:03