python 结构化数据解析
2023-09-14 09:06:37 时间
# -*- coding: utf-8 -*-
# @Time : 2018/8/31 14:32
# @Author : cxa
# @File : glomtest.py
# @Software: PyCharm
from glom import glom, Coalesce
import simplejson as sj
import pprint
jsonstr = """{"CERT_ID": "32143434", "CERT_NAME": "ssss", "PROD_ID": "CREDIT", "MP": "10086",
"TRANS_INFO": "20180911", "DATA": [{"attributes": {"CR_PS_MC_LM24": 0.0, "CR_TR_TR_LM24": 0.0,
"CD_AL_IS_LM24": 1.0, "CD_CC_AL_LM12": 0.0,
"CR_DC_OGO2_LM12": 0.0, "CR_EX_EP_LM06": 0.0,
"CR_CC_CS_LM03": 0.0}
}, {"blacklist": {}}, {
"loan": {"record": [
{"matchType": "phone", "matchValue": "1204",
"matchId": "CDGFHHSSSFAFRFRFRRFR",
"classification": [{"M9": {
"other": {"orgNums": 1, "loanAmount": null,
"totalAmount": null, "repayAmount": null,
"latestLoanTime": null}, "bank": null}},
{"M12": {"other": {"orgNums": 2,
"loanAmount": null,
"totalAmount": null,
"repayAmount": null,
"latestLoanTime": null},
"bank": null}}],
"latestRepaySuccessTime": null}]}}, {"overdue": {}}]}"""
def get_last_str(jsonstr):
new_dict = {}
last_dict = dict(sj.loads(f'{jsonstr}'))
spec = {
'attributes': ('DATA', [Coalesce('attributes', default=None)]),
'loan': ('DATA', [Coalesce(('loan.record', [
Coalesce(('classification', [Coalesce(*([f'M{i}.other' for i in range(1, 999)]),*([f'M{i}.bankLoan' for i in range(1, 999)]), default=None)]),
default=None)]), default=None)])
}
gm = glom(last_dict.copy(), spec,default="出错了")
for k, v in last_dict.items():
if not isinstance(v, (list, dict)):
new_dict.setdefault(k, v)
else:
for v2 in v:
for k3, v3 in v2.items():
if isinstance(v3, dict):
if v3:
if "record" in v3.keys():
recordstr = glom(v3, ('record', [Coalesce('classification', default=None)],
[[Coalesce(*([f'M{i}.other' for i in range(1, 999)]),*([f'M{i}.bankLoan' for i in range(1, 999)]),
default=None)]]))
for l in recordstr[0]:
try:
new_dict.update(
{f"{lk}_1" if lk in new_dict.keys() else lk: lv for lk, lv in l.items()})
except:
pass
else:
new_dict.update(
{f"{lk}_1" if lk in new_dict.keys() else lk: lv for lk, lv in v3.items()})
return str(new_dict)
相关文章
- python运行代码不成功_Python | PyCharm无法直接运行(Run)脚本
- python从列表字典集合中筛选数据
- [python]解析通达信盘后数据获取历史日线数据[通俗易懂]
- Python抓取数据_python抓取游戏数据
- python怎么调用api接口_偶尔的注解
- 【说站】python数据形式有哪些
- 【说站】python切片符号的使用
- 【说站】python测试用例中使用参数化的场景
- 基于Python的情感分析案例——知网情感词典
- python分析人口出生率代码_国家统计局居然也能用的上Python?人口数据Python脚本了解一下?…[通俗易懂]
- 数据科学家在使用Python时常犯的9个错误
- 玩转Python中字符串以及数据类型转换
- 下列python语句的输出结果是print_下列 Python语句的输出结果是「建议收藏」
- python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化|附代码数据
- Python中的装饰器
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
- python如何爬取爱某查类数据
- 【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享|附代码数据
- Python类型转换,Python数据类型转换函数大全
- Python操作Redis实现数据持久化(python操作redis)
- 详解 Kaggle 房价预测竞赛优胜方案:用 Python 进行全面数据探索
- Python-基础-入门简介