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

基于Pandas提取文本中所有nameis标识后姓名并存入指定列

Pandas 文本列提取姓名解决方案

1. 基础需求(单条文本仅一个nameis:标识)

优化原有正则的兼容性,支持姓名前后多余空格、and前后无空格等边缘场景,无需提前做replace操作:

# 一步提取姓名和剩余内容
extract_df = df['column'].str.extract(
    r'nameis:\s*(?P<first_last_name>.*?)\s*(?:,|\band\b)',
    expand=True
)
# 合并结果到原数据表
df = pd.concat([df, extract_df], axis=1)

正则逻辑说明:

  • nameis:\s* 匹配前缀标识,忽略标识后的任意数量空格
  • (?P<first_last_name>.*?) 非贪婪匹配所有字符作为姓名,天然支持带空格的中间名格式
  • \s*(?:,|\band\b) 匹配姓名终止符:逗号或独立的and单词,忽略终止符前的任意空格

2. 进阶需求(单条文本含多个nameis:标识)

使用str.extractall提取所有匹配项,再按原行索引分组拼接即可:

# 提取所有匹配的姓名,返回带多重索引的结果
all_names = df['column'].str.extractall(
    r'nameis:\s*(?P<first_last_name>.*?)\s*(?:,|\band\b)'
)['first_last_name']
# 按原行索引分组,同一行的多个姓名用逗号拼接,合并到原表
df['first_last_name'] = all_names.groupby(level=0).apply(','.join).fillna('')

以上代码适配你给出的示例场景,多nameis:的测试用例输出结果分别为joe doe,adrian muller、patric test,adam joe,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:02