2026-10-02 · 喵窝资源铺
群里发个接龙报名、收订饭统计、收集健康打卡——收集是方便,但收尾是灾难:几十条「1. 张三:138xxxx 部门A」的消息要一行行复制进 Excel,还总有人编号跳行、冒号用成中文的、开头多个全角空格。这篇给一个 本地运行 的脚本:把群里复制的原始文本存成 txt,直接吐出一张干净的 xlsx(姓名/手机号/备注三列)。本文代码实跑验证,真实输出见下。
先 pip install pandas openpyxl,脚本存为 jielong.py,把群里复制的接龙文本存成 jielong.txt(直接全选复制粘贴,格式乱没关系),运行 python jielong.py jielong.txt 报名表.xlsx:
"""微信群接龙/报名消息 → Excel。用法:python jielong.py [输入txt] [输出xlsx]"""
import re, sys
import pandas as pd
SRC = sys.argv[1] if len(sys.argv) > 1 else "jielong.txt"
OUT = sys.argv[2] if len(sys.argv) > 2 else "报名表.xlsx"
text = open(SRC, encoding="utf-8").read()
rows = []
for line in text.splitlines():
line = line.strip()
if not line:
continue
# 去掉行首编号:兼容 1. 1、 1) 1.(全角)
line = re.sub(r'^[\d0-9]+\s*[\.\、\)\).]\s*', '', line)
if not line or line.startswith('#'):
continue
# 中文冒号统一成英文,方便后面切分
line = line.replace(':', ':')
m = re.match(r'([\u4e00-\u9fa5A-Za-z·]{2,8})\s*[::,,]?\s*(.*)', line)
if m:
name, rest = m.group(1), m.group(2).strip()
phone = ''
pm = re.search(r'1[3-9]\d{9}', rest)
if pm:
phone = pm.group(0)
rest = rest.replace(pm.group(0), '').strip(' ::,,')
rows.append({'姓名': name, '手机号': phone, '备注': rest})
df = pd.DataFrame(rows)
df.to_excel(OUT, index=False)
print(f'共解析出 {len(df)} 人 -> {OUT}')
print(df.to_string(index=False))
我按群里最常见的乱格式造了 11 条接龙(编号跳行、中文冒号、行首全角空格、有人不写编号、有人替别人代订),跑一遍的输出:
共解析出 11 人 -> 报名表.xlsx 姓名 手机号 备注 张三 13812345678 部门A 李四 13987654321 部门B 带家属 王五 赵六 13711112222 不要辣 孙七 13566667777 周八 13699998888 加两份 吴九 13400001111 小明 13322223333 帮小元代订 郑十 13233334444 冯一 13144445555 部门C 陈二 13055556666
逐条核对:11 人全部进表、一个不多一个不少;手机号单独成列;没写编号的人(王五、小明)和行首带全角空格的吴九都正常识别。幂等验证:同样文本再跑一遍,还是 11 行——输出是整体覆盖不是追加,不会越跑越多。
strip() 加冒号统一 replace 这两步实测把最常见的情况全兜住了。这脚本按「姓名 + 手机号 + 备注」的通用接龙格式写的。如果你收集的是别的字段(姓名+车牌、姓名+体温),或者要按部门自动分表、直接算人数汇总——逻辑要再包一层,可以直接找我们代写(见下)。
相关阅读:多轮接龙合并去重 | 批量合并 Excel | Excel 清洗脚本 | 批量重命名文件 | Python 自动化能帮你做什么