树状结构: 字典里只有一个键值对, 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)
05-12 21:04