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

如何从字符串提取日期并删除早于一周的记录——Kafka主题缺失检测脚本优化需求

处理缺失Kafka主题检测结果:日期标准化+过滤一周前记录

我来帮你搞定这个收尾工作!咱们可以通过几个清晰的步骤来处理这些检测结果,既把日期转成标准格式,又能自动过滤掉早于一周的记录。下面以Python为例(脚本开发用它很顺手),给你详细拆解:

步骤1:准备工作

首先导入处理日期的核心模块,用来做日期解析和时间计算:

from datetime import datetime, timedelta

步骤2:编写处理函数

写一个专门的函数来处理你的结果字符串,逻辑清晰好维护:

def process_missing_topics(results_str):
    # 把结果按行分割成单独的记录
    records = results_str.strip().split('\n')
    # 计算当前时间往前推一周的日期(作为过滤的阈值)
    one_week_ago = datetime.now() - timedelta(weeks=1)
    processed_records = []
    
    for record in records:
        # 提取每条记录开头的日期部分(比如"2022 Mar 11")
        date_segment = record[:11].strip()
        try:
            # 把英文缩写格式的日期转换成datetime对象
            record_date = datetime.strptime(date_segment, '%Y %b %d')
        except ValueError:
            # 遇到格式异常的日期,打印提示并跳过这条记录
            print(f"警告:无法解析日期 '{date_segment}',已跳过该记录")
            continue
        
        # 只保留一周内的有效记录
        if record_date >= one_week_ago:
            # 把日期转成标准的YYYY-MM-DD格式
            standard_date = record_date.strftime('%Y-%m-%d')
            # 替换原日期,拼接成新的记录
            updated_record = f"{standard_date} {record[11:]}"
            processed_records.append(updated_record)
    
    # 把处理后的记录重新拼接成字符串返回
    return '\n'.join(processed_records)

步骤3:使用示例

假设你的原始结果字符串存在raw_results变量里,直接调用函数就能得到处理后的结果:

raw_results = """2022 Mar 11 ADR00180 - Is missing the topic for: xx
2022 Jul 17 ADR00195 - Is missing the topic for: xx
2022 Feb 16 ESO00011 - Is missing the topic for: xx
2022 Aug 09 EMF00023 - Is missing the topic for: xx
2022 May 24 ESO00012 - Is missing the topic for: xx
2022 May 22 ESO00013 - Is missing the topic for: xx"""

processed_results = process_missing_topics(raw_results)
print(processed_results)

(注:你示例里的日期都是2022年的,远早于当前一周,所以运行后会返回空字符串,这是正常的过滤结果~)

关键细节说明

  • 日期解析:用strptime('%Y %b %d')匹配"2022 Mar 11"格式,%b对应英文月份缩写(比如Mar、Jul),兼容各种英文月份缩写的大小写。
  • 过滤逻辑:datetime.now()获取当前时间,减去timedelta(weeks=1)得到一周前的时间点,只保留日期大于等于这个阈值的记录。
  • 格式自定义:如果需要其他标准格式,把strftime('%Y-%m-%d')改成你想要的即可,比如%Y/%m/%d或者%d-%b-%Y。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:19:08