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

使用str.split结合正则表达式拆分首字母大写名与全大写姓氏

解决方案

你之前用split的思路不适用全大写姓氏位置不固定的场景,改为先提取所有全大写片段作为姓氏,剩余内容处理后作为名字即可实现需求,代码如下:

# 提取所有全大写单词拼接为姓氏
df['LastName'] = df['FullName'].str.findall(r'\b[A-Z]+\b').str.join(' ')
# 移除所有全大写单词,清理多余空格后作为名字
df['FirstName'] = df['FullName'].str.replace(r'\b[A-Z]+\b', '', regex=True)\
                                .str.strip()\
                                .str.replace(r'\s+', ' ', regex=True)

规则适配调整

如果你的姓名数据中存在单大写字母前缀(比如A John里的A是名字前缀而非姓氏),可以把正则里的全大写单词匹配规则改为仅匹配长度≥2的全大写串,避免误判:
把r'\b[A-Z]+\b'替换为r'\b[A-Z]{2,}\b'即可。

效果验证

用你给出的示例测试,输出结果如下:

FullNameFirstNameLastName
Manuel JOSEManuelJOSE
Vincent MUANDUMBAVincentMUANDUMBA
Alejandro DE LORRESAlejandroDE LORRES
Luis FILIPE da RiveraLuis da RiveraFILIPE
LIM Jock HoiJock HoiLIM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:54:03