解析MongoDB查询出的多条json(bson)数据并转化为可分析的表格(Python实现+图文)

解析MongoDB查询出的json数据并转化为表格

问题描述:我们从MongoDB查询出的数据想要进行分析,需要转换成我们可以分析的格式,要进行json解析成我们想要的格式,比如表格

MongoDB查询出来的结果如下(一个文件里面由多个json(Bson)格式组成)

/* 1 */
{
    "applyInfo" : {
        "_id" : "20190322",
        "userRealname" : "上课代表"
    },
    "bbgRuleDefineReport" : {
        "score" : 2,
        "defines" : [ 
            {
                "name" : "哈哈",
                "auditPolicy" : 10
            }, 
            {
                "name" : "弟弟",
                "auditPolicy" : 10
            }, 
            {
                "name" : "gg",
                "auditPolicy" : 1
            }, 
            {
                "name" : "爸爸",
                "auditPolicy" : 100
            }, 
            {
                "name" : "好的",
                "auditPolicy" : 100
            }
        ]
    }
}

/* 2 */
{
    "applyInfo" : {
        "_id" : "20190322",
        "userRealname" : "还是打款"
    },
    "bbgRuleDefineReport" : {
        "score" : 10,
        "defines" :  [ 
            {
                "name" : "哈哈",
                "auditPolicy" : 2
            }, 
            {
                "name" : "弟弟",
                "auditPolicy" : 3
            }, 
            {
                "name" : "gg",
                "auditPolicy" : 1
            }, 
            {
                "name" : "爸爸",
                "auditPolicy" : 5
            }, 
            {
                "name" : "好的",
                "auditPolicy" : 9
            }
        ]
    }
}

/* 3 */
{
    "applyInfo" : {
        "_id" : "20190322",
        "userRealname" : "格式的机会"
    },
    "bbgRuleDefineReport" : {
        "score" : 4,
        "defines" :  [ 
            {
                "name" : "哈哈",
                "auditPolicy" : 10
            }, 
            {
                "name" : "弟弟",
                "auditPolicy" : 10
            }, 
            {
                "name" : "gg",
                "auditPolicy" : 1
            }, 
            {
                "name" : "爸爸",
                "auditPolicy" : 100
            }, 
            {
                "name" : "好的",
                "auditPolicy" : 100
            }
        ]
    }
}

想要的结果(表格形式)

  订单号 姓名 总分 名字
0 20190322 上课代表 2 哈哈 10
1 20190322 上课代表 2 弟弟 10
2 20190322 上课代表 2 gg 1
3 20190322 上课代表 2 爸爸 100
4 20190322 上课代表 2 好的 100
5 20190322 还是打款 10 哈哈 2
6 20190322 还是打款 10 弟弟 3
7 20190322 还是打款 10 gg 1
8 20190322 还是打款 10 爸爸 5
9 20190322 还是打款 10 好的 9
10 20190322 格式的机会 4 哈哈 10
11 20190322 格式的机会 4 弟弟 10
12 20190322 格式的机会 4 gg 1
13 20190322 格式的机会 4 爸爸 100
14 20190322 格式的机会 4 好的 100

 

Python代码实现

# -*- coding: utf-8 -*-
"""
time:20190508
"""

f = open(r"C:\Users\Administrator\Desktop\csdn.txt",'r')
s=f.read()
import re
'''
把查询出来的文件由多个json组成,切分每一个json用list存储
'''
strinfo = re.compile('\\/\\* \\d+ \\*\\/')
b = strinfo.sub("#",s)
b=b[1:]
temp=b.split('#')
a=[]
'''
切出来的是字符串,使用json.loads将其转换为json
'''
import json
for i in temp:
     a.append(json.loads(i))


result=[]

'''
json数据提取
'''
for i in a:
    for j in i["bbgRuleDefineReport"]["defines"]:
        b=[]
        b.append(str(i["applyInfo"]["_id"]))
        b.append(i["applyInfo"]["userRealname"])
        b.append(i["bbgRuleDefineReport"]["score"])
        b.append(j["name"])
        b.append(j["auditPolicy"])
        result.append(b)

#file = open(r"C:\Users\黄小权\Desktop\result.txt","wb")

'''
保存到excel表格
'''
import pandas as pd
def write_csv(datalist,path):
    head = ["订单号","姓名","总分","名字","分"]
    test=pd.DataFrame(data=datalist,columns =head)
    test.to_excel(path, encoding = "gbk")
    return test

path=r'C:\Users\Administrator\Desktop\csdn.xlsx'

write_csv(result,path)

桌面就有我们想要的文件了

ok,实现

解析MongoDB查询出的多条json(bson)数据并转化为可分析的表格(Python实现+图文)_第1张图片

你可能感兴趣的:(MongoDB)