问题描述:我们从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,实现