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

如何解析提取被HTML标签污染的任意格式日期

被HTML标签污染的日期解析方案

核心处理思路

  • 第一步:预处理清除HTML标记

所有穿插的HTML标签属于无效干扰信息,直接通过正则全局匹配移除即可,不需要额外保留标签内容。处理时额外做空白符归一化,把多个连续空格、换行、制表符统一替换为单个空格,避免空格干扰后续日期解析。

import re

def clean_html(raw_text: str) -> str:
    # 移除所有HTML标签
    no_tag_text = re.sub(r'<[^>]+>', '', raw_text)
    # 归一化空白符
    return re.sub(r'\s+', ' ', no_tag_text).strip()

对示例输入<tag> Aug 22, <tag> 2021执行上述方法后,输出为Aug 22, 2021。

  • 第二步:通用日期解析与格式化

不要手动编写正则匹配各类日期格式,直接使用成熟的第三方日期解析库即可,这类库内置了几十种常见日期格式的匹配规则,支持月名缩写/全写、不同分隔符、年月日不同排序等场景的自动识别。
以Python生态的dateutil库为例:

from dateutil import parser
from datetime import datetime

def parse_and_format_date(clean_text: str, target_format: str = "%d %B %Y") -> str:
    # 自动识别解析日期,可根据业务需求添加参数调整歧义场景的解析优先级
    # 比如添加dayfirst=True来优先解析为 日/月/年 格式
    date_obj = parser.parse(clean_text)
    return date_obj.strftime(target_format)

对上一步输出的Aug 22, 2021执行上述方法后,输出为22 August 2021,和示例要求完全匹配。

边界场景处理注意事项

  • 如果清理后的文本内存在多个日期,可通过parser.parse的fuzzy_with_tokens参数提取所有匹配的日期片段,再根据业务规则筛选需要的目标日期
  • 遇到存在歧义的日期格式(如05/10/2023),可通过dayfirst、yearfirst参数指定解析优先级,避免解析结果不符合预期
  • 如果业务场景存在罕见的自定义日期格式,可给parser.parse传入dateutil.parser.parserinfo对象补充自定义的月名、周名匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:48:00