返回教程

identity.py

下载原文件

"""只合并已确认的完整号码代号;未知身份各条保留。"""
import re


def person_key(row, line=None):
    value = (row.get('手机号') or '').strip()
    return value if re.fullmatch(r'TEL-\d+', value) else '待核:' + str(row.get('申请编号') or line)


def group_people(rows):
    groups = {}
    for line, row in enumerate(rows, 2):
        groups.setdefault(person_key(row, line), []).append(row)
    return groups


def dedupe(rows, key='手机号'):
    """兼容旧调用;跨阶段统计应使用group_people,不擅选主申请。"""
    seen, kept, duplicates, unsure = {}, [], [], []
    for row in rows:
        value = (row.get(key) or '').strip()
        if not re.fullmatch(r'TEL-\d+', value):
            unsure.append(row); kept.append(row)
        elif value in seen:
            duplicates.append((seen[value], row))
        else:
            seen[value] = row; kept.append(row)
    return kept, duplicates, unsure