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

Python中如何用正则表达式查找数据集中不符合规范的异常日期

多分隔符字符串下异常日期识别方案

核心逻辑避开复杂反向正则,走「统一拆分片段→极简正向规则匹配标准格式→筛出异常」的路径,实现成本低、好调试。

  • 第一步:一次性拆分所有混合分隔符的字符串
    不需要逐个处理#/?/|/;//这类分隔符,直接把所有不属于「数字、字母、-/:/T(时间串允许的字符)」的符号全当成分隔符切分,切完过滤掉空片段即可。只需要一行极简的切分逻辑,不需要复杂正则:
    import re
    fragments = [f for f in re.split(r'[^0-9a-zA-Z:T-]', raw_string) if f]
    
  • 第二步:写零正则的标准格式判断函数
    你需要的标准日期格式固定为20XX-XX-XXTXX:XX:XX,总长度19位,固定位置的字符完全确定,直接按位置判断即可,连正则都不用写:
    def is_standard_datetime(s: str) -> bool:
        if len(s) != 19:
            return False
        # 按固定位置校验特征:20开头、横杠、T、冒号的位置完全匹配
        return (
            s.startswith("20")
            and s[4] == "-" and s[7] == "-"
            and s[10] == "T"
            and s[13] == ":" and s[16] == ":"
        )
    
    如果后续需要加合法值校验(比如月份在1-12、日期在1-31这类),直接在函数里加数值判断即可,不需要调整复杂正则。
  • 第三步:批量捕获异常日期
    遍历切分后的所有片段,先筛选出疑似时间串的片段(包含T且至少有2个冒号,对应时分秒结构),再用上面的判断函数校验,校验不通过的就是异常值。普通文本、纯数字片段因为不满足时间串特征,不会被误判。

完整可运行测试代码

import re

def is_standard_datetime(s: str) -> bool:
    if len(s) != 19:
        return False
    return (
        s.startswith("20")
        and s[4] == "-" and s[7] == "-"
        and s[10] == "T"
        and s[13] == ":" and s[16] == ":"
    )

def find_abnormal_datetime(raw_string: str) -> list:
    fragments = [f for f in re.split(r'[^0-9a-zA-Z:T-]', raw_string) if f]
    abnormal_list = []
    for frag in fragments:
        # 先筛疑似时间串:带T且至少有两个冒号
        if "T" in frag and frag.count(":") >= 2:
            if not is_standard_datetime(frag):
                abnormal_list.append(frag)
    return abnormal_list

# 测试参考样本
test_sample1 = "0/0/Just/Some/2022-07-06T17:05:00/2022-07-06T19:25:00/Sample/6780/Data/in///my_Dataset"
print(find_abnormal_datetime(test_sample1)) 
# 输出:[] (样本内两个日期均符合标准,无异常)

# 测试带异常值的样本
test_sample2 = "xxx/+5002522-03-04T01:03:00|2023-01-01T12:00:00#wrong?2022-13-40T99:99:99"
print(find_abnormal_datetime(test_sample2))
# 输出:['+5002522-03-04T01:03:00', '2022-13-40T99:99:99']

这个方案全程没有使用复杂的日期正则表达式,所有判断逻辑都是直白的字符、位置匹配,出问题排查成本极低,完全适配你当前20开头年份的数据集场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:51:21