python处理嵌套字典写入Excel

需求:针对mongo数据库的数据进行提取,因为mongo数据库的字段是可伸缩的,所以导致没有值的key不会出现,针对提取的该数据的嵌套字典做处理,如下所示,给了一个data的示例数据

import openpyxl


class OperationExcel(object):
    """处理Excel数据,并且写入
    """
    def __init__(self, sheet):
        """
        根据嵌套字典获取Excel的表头
        :param sheet: 定义一个sheet的名称
        """
        self.wb = openpyxl.Workbook()
        self.ws = self.wb.create_sheet(index=0, title=sheet)

    def get_title(self, data):
        """
        :param data: 传入json数据的嵌套字典
        :return: 返回所有字典的标题(keys)
        """
        title_list = []
        for dic in data:
            for key in dic:
                if key not in title_list:
                    title_list.append(key)

        return title_list

    def handle_data(self, title_list, data, filename):
        """
        :param data: 调用get_title返回的标题列表
        :param data: 传入json数据的嵌套字典
        :return: 返回所有字典的标题(keys)
        """
        # 1. 把列表的标题插入Excel的第一行
        first_row = 1
        for header in title_list:
            col = title_list.index(header)
            self.ws.cell(first_row, col + 1, header)
        # 2. 把所有的值,根据标题去筛选,插入excel
        row = 2
        for player in data:
            for _key, _value in player.items():
                col = title_list.index(_key)
                self.ws.cell(row, col + 1, _value)
            row += 1  # enter the next row
        self.wb.save(filename)
        self.wb.close()


if __name__ == '__main__':
    filename = "上海数据.xlsx"
    sheet = "数据清洗"
    data = [{'欢迎': 4, "马上": 3, "登录": "成功"}, {'欢迎': 5, "马上": 7, "退出": "成功"}, {'欢迎': 9, "马上": 8, "注册": "失败"}]
    A = OperationExcel(sheet)
    title_list = A.get_title(data)
    # 清洗数据,写入Excel
    A.handle_data(title_list=title_list,
                  data=data,
                  filename=filename)

1.从mongo提取数据,返回字典格式可以参考我之前的文章:

python操作mongo数据库返回字典_一夜白头催人泪-CSDN博客1.MANGO_DATABASES["HOST"] 是主机IP2.MANGO_DATABASES["DB"] 是数据库名字3.MANGO_DATABASES["db3"]是表名class MangoOperationMoney: """操作mango数据库返回字典 """ def __init__(self): self.myclient = pymongo.MongoClient(MANGO_DATABASES["HOST"], MANGO_DAThttps://blog.csdn.net/cxl0406/article/details/120910217?spm=1001.2014.3001.5501

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夜白头催人泪

你的鼓励,是我最大的支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值