python 生成 树状结构

树状结构: 字典里只有一个键值对, key 为根, 值为一个列表, 列表里的某个或多个元素可以再进行分支(分支还是列表)

比如: 邮件的发件人, 收件人, 转发关系树状结构

forwarding_recp = re.compile(".*?发件人:(.*?);.*?发送时间:.*?收件人:(.*?)主题", re.S)

def parse_addr(addr, split_str=','):
    l = []
    if addr:
        for a in addr.split(split_str):
            l.append(utils.parseaddr(a)[1])
    return l

def gen_forwarding(con):  # 参数是解析过后的邮件正文
    re_ret = forwarding_recp.findall(con)
    forwarding = dict()
    for i in re_ret:
        from_addr = parse_addr(i[0])[0]
        to_addr = parse_addr(i[1], ";")
        del to_addr[-1]

        for k, v in forwarding.items():
            forwarding.clear()
            to_addr.remove(k)
            to_addr.append({k: v})
            forwarding[from_addr] = to_addr
        forwarding[from_addr] = to_addr
    return json.dumps(forwarding)

 

转载于:https://www.cnblogs.com/520zm/p/10843779.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值