• Pai到用时方恨少


    前言

    古人言” 书到用时方恨少“,到我这里成了Pai到用法方恨少呀!
    前段时间需要处理csv表格的数据,然后需求很明确定,但到实际落地时遇到各种小问题—语法不熟悉、API参数不对等。只能是边查资料边撸代码,写了几个小时才勉强写出自己想要工作脚本
    所以呀:Python这类得提高生产力,提高工作效率的脚本语言还是需要持续学习,经常使用,达到熟得生巧的程序才行呀!
    最终的代码大概如下示例

    import pandas as pd
    import urllib.parse
    import json
    
    # python 3
    
    def find404(name):
        file_path = '/Users/luo/Downloads/DL1452839_RESULT_154326248.csv'
        csv_data = pd.read_csv(file_path, usecols=['reqdata'])
        uriMap = {}
        for i, j in csv_data.iterrows():
            # j[0]为内容,类型是str
            json_str = urllib.parse.unquote(j[0])
            json_obj = json.loads(json_str)
            # json_obj是一个json数组,在python里对应一个list,list中的dict是一个json对象数据
            for value in json_obj:
                if 'ret' in value and value['ret'] == '404' and 'scode' in value and value['code'] == 1024:
                    key = urllib.parse.unquote(value['uri'])
                    if (key in uriMap):
                        uriMap[key] = uriMap[key] + 1
                    else:
                        uriMap[key] = 1
        uri_list = sorted(uriMap.items(), key=lambda x: x[1], reverse=True)
        print("接口名, 次数")
        for iterm in uri_list:
            print(f'{iterm[0]}, {iterm[1]}')
    
    
    # Press the green button in the gutter to run the script.
    if __name__ == '__main__':
        find404('PyCharm')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    需求说明

    从一个表格中筛选某列,然后对列中的每项数据做多次url decode跟数据的二次筛选
    表格的列 key为 reqdata,reqdata的内容是一个Json数组且被urlencode后的字符串
    Json数组内容简单来说是这样子
    [{“code”:12, “ret”:200, “uri”:“fun1”}, {“code”:1024, “ret”:401, “uri”:“fun2”}]
    我们需要找出code为1024且ret等于401的url,然后做uri维度的次数统计

    第一步:用pandas过滤出reqdata列,然后遍历每一项
    遍历每一项的先做url decode,然后再转成json数组,再做数组的遍历,找到我们关注的code为1024的且ret为404的
    json对象,对该对象的url的值再一次url decode,然后再把decode的值放到一个map中(借助map来对某个key做计数)
    第二步:对收集到的map做排序,并输出到终端

  • 相关阅读:
    DDD(领域驱动设计)
    专利申请需要多少钱
    代码随想录算法训练营刷题复习4 :单调栈
    复制一个项目后,错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException:
    Ajax、Fetch、Axios三者的区别
    【Linux 源码阅读记录】设备树解析 of 相关代码
    Intel-Hex , Motorola S-Record 格式详细解析
    好用且免费的ChatGPT工具
    四只股票的收盘价可视化
    CleanMyMac X2023测评是不是恶意软件?
  • 原文地址:https://blog.csdn.net/SCHOLAR_II/article/details/126668496