You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式实现无空格拼接重复姓名的去重处理

解决方案

不需要逐字符比对,直接用正则匹配整串重复规则就能实现,比逐字符遍历实现更简洁、执行效率更高。

核心实现逻辑

你的场景本质是识别「完整姓名字符串连续重复拼接2次及以上」的异常值,提取单次出现的有效姓名即可,对应正则模式为^(.+)\1+$:

  • ^和$分别匹配字符串的开头、结尾,确保校验覆盖整个字符串内容,避免误匹配字符串局部的重复片段
  • (.+)捕获长度≥1的连续子串,也就是我们要保留的单次有效姓名
  • \1+匹配前面捕获的姓名片段连续出现1次及以上,合起来就匹配到「整个字符串由同一个姓名重复拼接而成」的异常格式

Pandas Series 实现代码

import pandas as pd

# 构造测试样例
name_series = pd.Series([
    "John Smith",
    "David BrownDavid Brown"
])

# 批量替换去重
clean_series = name_series.str.replace(r'^(.+)\1+$', r'\1', regex=True)

执行后得到的输出完全符合预期:

0     John Smith
1    David Brown
dtype: object

方案适配说明

  • 该规则同时兼容你之前遇到的带空格重复场景(比如David Brown David Brown),不需要单独拆分规则处理
  • 支持识别重复3次及以上的异常拼接(比如Bob LeeBob LeeBob Lee会被正确处理为Bob Lee)
  • 不会误改局部重复的非目标数据(比如John SmithSmith这类不是完整姓名重复的脏数据会保留原值,不会被错误截断)
  • 如果你的姓名库存在本身为重复结构的短合法姓名(比如Lili、Yoyo这类),可以将正则调整为^(.{3,})\1+$,要求捕获的有效姓名长度至少3个字符,即可避免短名误判。

内容的提问来源于stack exchange,提问作者Osca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:45:38