61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
||
# @Time : 2023/6/28 14:35
|
||
# @Author : chenyinhua
|
||
# @File : extract_data_handle.py
|
||
# @Software: PyCharm
|
||
# @Desc: 提取数据的一些方法
|
||
|
||
# 标准库导入
|
||
import re
|
||
# 第三方库导入
|
||
from jsonpath import jsonpath
|
||
from loguru import logger
|
||
|
||
|
||
def json_extractor(obj: dict, expr: str = '.'):
|
||
"""
|
||
:param obj :json/dict类型数据
|
||
:param expr: 表达式, . 提取字典所有内容, $.test_api_case 提取一级字典case, $.test_api_case.data 提取case字典下的data
|
||
:return result: 提取的结果,未提取到返回 None
|
||
"""
|
||
try:
|
||
result = jsonpath(obj, expr)[0]
|
||
logger.trace("\n======================================================\n" \
|
||
"-------------Start:json_extractor--------------------\n"
|
||
f"提取表达式为: {expr} \n"
|
||
f"提取值为: {result}\n"
|
||
"=====================================================")
|
||
except Exception as e:
|
||
logger.trace("\n======================================================\n" \
|
||
"-------------End:json_extractor--------------------\n"
|
||
f"提取表达式为: {expr}\n"
|
||
f"提取数据为: {obj}\n"
|
||
f"错误信息为:{e}\n"
|
||
"=====================================================")
|
||
result = None
|
||
return result
|
||
|
||
|
||
def re_extract(obj: str, expr: str = '.'):
|
||
"""
|
||
:param obj : 字符串数据
|
||
:param expr: 正则表达式
|
||
:return result: 提取的结果,未提取到返回 None
|
||
"""
|
||
try:
|
||
result = re.findall(expr, obj)[0]
|
||
logger.trace("\n======================================================\n" \
|
||
"-------------Start:re_extract--------------------\n"
|
||
f"提取表达式为: {expr}\n" \
|
||
f"提取值为: {result}\n" \
|
||
"=====================================================")
|
||
except Exception as e:
|
||
logger.trace(f"\n======================================================\n" \
|
||
"-------------End:re_extract--------------------\n"
|
||
f"提取表达式为: {expr}\n" \
|
||
f"提取数据为: {obj}\n" \
|
||
f"错误信息为:{e}\n" \
|
||
"=====================================================")
|
||
result = None
|
||
return result
|