如何用Python将连在一起的两个西班牙裔姓名拆分为独立单词
西班牙裔连写姓名拆分实现方案
核心思路
这类连写姓名本质是两个固定的西班牙裔常用姓氏拼接而成,通用拼写检查库没有针对性的姓氏词库所以无法适配,我们可以通过「西班牙裔常见姓氏数据集+最大匹配算法」实现批量拆分,常见场景下准确率可满足需求。
实现步骤
- 提前整理西班牙裔常见姓氏词表,转成全小写后存为集合类型,方便后续毫秒级查询
- 对每个连写的姓名字符串,从后往前遍历所有可能的拆分点,判断拆分出的前后两部分是否都在姓氏词表中
- 匹配不到的罕见姓氏可单独整理进自定义白名单,迭代优化词库覆盖度
示例代码(Python)
# 提前导入西班牙裔姓氏集合,此处仅列部分常用姓氏做演示,可自行扩充词库 SPANISH_SURNAMES = {"trujillo", "hernandez", "garcia", "rodriguez", "martinez", "lopez", "gonzalez", "perez", "sanchez"} def split_spanish_combined_name(combined_name: str) -> str: combined_name = combined_name.lower().strip() # 优先匹配更长的前半段姓氏,避免短词优先导致的匹配错误 for split_idx in range(len(combined_name)-1, 0, -1): first_part = combined_name[:split_idx] second_part = combined_name[split_idx:] if first_part in SPANISH_SURNAMES and second_part in SPANISH_SURNAMES: return f"{first_part} {second_part}" # 未匹配到的返回原字符串,方便后续人工校验 return combined_name
效果测试
- 输入:
trujillohernandez - 输出:
trujillo hernandez
批量处理说明
针对整列数千条数据,直接对列中每个元素调用上述function即可,全量处理耗时不会超过1秒。如果存在三个姓氏连写的情况,可修改匹配逻辑支持多段拆分。
内容的提问来源于stack exchange,提问作者bernard romero
相关产品推荐
相关产品推荐

