python从log中提取需要的数据包含json 和数字 字母包含验证

有很多个log,需要提取log中一个字段A的值,不全是数字(包含字母)的数据list

我的log示例
在这里插入图片描述

os、json都是python自带的包,不需要导入
open() 打开一个文件
readline() 逐行读取文件
str().isdecimal()是判断字符串是否全部是数字,是的话返回true
json.loads(data)字符串转json对象

formart()方法是使用{}为标识符,在后面传入对应的值即可
另一种用法是{0}、{1},即在{}中加入index,后面按照对应的顺序传入即可
例如:print(‘a = {1}; b = {0}; c{1}]’.format(‘abcdefg’, ‘1234567’))
python print('a = {1}; b = {0}; c{1}]'.format('abcdefg', '1234567'))
运行效果:
在这里插入图片描述

import json
import os

errorInfo = {}  # 事先声明一个字典作为保存数据的容器


# 定义一个读取文件的方法
def readFile(fileName):  # 参数为文件的路径
    f = open(fileName, mode='r', encoding='utf-8')  # 打开文件
    line = f.readline()  # 逐行读取文件内容
    while line:  # 循环
        if 'SCRMRequester' in line:  # 先筛选提取每行中包含【SCRMRequester】的数据
            data = line[95:]  # 提取第95个字符之后的数据
            if '[]' not in data and 'OgilvyApiRetailVips' not in line:  # 筛选剔除空json和其它的错误数据
                try:  # 防止报错停止程序
                    json1 = json.loads(data)  # 转为json
                    for item in json1:  # 循环取json list中的单个json对象
                        ecom_customer_no = item['ecom_customer_no']  # 获取对应的值
                        join_store_code = str(item['join_store_code'])  # 获取对应的值
                        if join_store_code.isdecimal():  # 判断是否全部是数字
                            print('ecom_customer_no = {}; join_store_code = {}'.format(ecom_customer_no,
                                                                                       join_store_code))  # 打印
                        else:
                            errorInfo[str(ecom_customer_no)] = join_store_code  # 保存到errorInfo字典中
                except Exception as e:
                    print(e.msg)
        line = f.readline()  # 读取下一行
    f.close()


# 定义一个获取文件夹中所有文件名的方法
def getFileNames(path):  # 参数是文件夹的路径
    # os.listdir()方法获取文件夹名字,返回数组
    file_name_list = os.listdir(path)
    return file_name_list


if __name__ == '__main__':
    path = 'C:\\***\\CRM'
    file_name_list = getFileNames(path)  # 获取到文件名的集合
    for filename in file_name_list:  # 遍历文件名集合并以文件名为参数调用读取文件方法
        readFile('C:\\***\\CRM\\' + filename)
    print(errorInfo)  # 打印出需要的数据


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值