zoukankan      html  css  js  c++  java
  • 记一次简单的正则表达式匹配实践

    背景:

    由于需要对大促期间的曝光日志进行降级,需要验证保留下来的70多个pageid的页面是否生效。

    如果使用常规手段,如果想要全量验证,需要使用kafka收发数据的脚本跑70+遍,想想就是一件很繁重很蠢的工作。

    这个时候想到使用python进行辅助验证,即可以进行全量校验,又能节省时间。

    思路:

    1.将所有的pageid值放入文本文件,配合open()和readline()读取page_id,以数组的形式保存;

    2.使用正则表达式函数re.search()定位到源数据中key为"page_id",并取其value值;

    3.使用re.sub()将page_id数组中的值,替换掉源数据中"page_id"的value值,这里使用到for循环

    4.在每个for循环中将替换之后的数据逐一发送到kafka,这里使用的是kafka模块中的KafkaProducer方法。

    OK,思路清楚之后开始代码的实现。

    下面贴出主要的实现代码

    #打开并读取文件
    f = open('page_id.txt', 'r', encoding='UTF-8')
    lines = f.readlines()
    l_length = len(lines)
    data = []
    
    #这里创建kafka发送函数
    def product(data):
        producer.send('ssa_sdk_exposure_log', data.encode('utf-8'))
        producer.flush()
    
    #使用for循环替换并发送数据
    for i in range(0,len(lines)-1):
        lines[i] = lines[i].strip('
    ')             #这里是为了去除读取文件中的page_id时,产生的
    
        target1 = re.search('"pageid":"(.*?)"',testdata1)   #正则表达式匹配到pageid的一段字符串
        target = target1.group(1)                #取匹配内容中第一个括号里的字符串,如果是group(0),则返回整个匹配结果
        testdata1 = re.sub(target,lines[i],testdata1)    #使用re.sub()替换新的page_id
        print(testdata1)
        product(testdata1)

    在脚本执行之前,打开kafka接收命令窗口,使用重定向 > 将接收到的数据保存在一个txt文件中;

    然后执行发送脚本;

    使用wc -l 查看接收到的文件条数是否与给的page_id页面数一致,也可将文件sz到本地进行分析。

    写在最后:最后验证这一部目前还是自己手动去做的,后面有机会的话可以试一下能否利用代码实现。

    目前有个想法就是将kafka发送、接收数据做成一个工具的形式,借助pyqt,或者tkinter第三方界面化的库实现。

    最懒的人就是整天忙得没时间学习、反思、成长的人。
  • 相关阅读:
    最小顶点覆盖,最大独立集,最小边覆盖
    Security Badges
    异常
    List和Set
    数据结构
    Collection集合
    Excel序号递增
    VM虚拟机桥接模式无法联网解决办法
    mybatis-Plus方法指定更新的字段
    maven项目 导出相关依赖包到指定文件夹
  • 原文地址:https://www.cnblogs.com/jockeyhao/p/11806039.html
Copyright © 2011-2022 走看看