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

如何在Python 3中编写正则,处理含标点的姓名解析适配URL?

解决正则表达式处理姓名的问题

嘿,我明白你遇到的问题了——原来的正则只能匹配连续的字母,碰到点就卡壳了,所以"J.T.R"只会拿到第一个"J"对吧?咱们来调整一下代码,同时搞定两种情况:

思路拆解

咱们需要覆盖两种核心场景:

  • 带后缀的姓名(比如"John, Jr"):提取逗号前面的有效姓名部分
  • 带点的缩写(比如"J.T.R"):提取所有字母,去掉中间的分隔点

修改后的代码

import re

last_names_parsed = []
for ln in last_names:
    # 先处理带逗号的后缀场景:匹配逗号前的内容
    comma_match = re.match(r'^([^,]+),', ln)
    if comma_match:
        # 提取后去除可能的前后空格,兼容不规范输入
        parsed_name = comma_match.group(1).strip()
    else:
        # 处理带点的缩写场景:提取所有字母并拼接
        letters = re.findall(r'[A-Za-z]', ln)
        parsed_name = ''.join(letters)
    last_names_parsed.append(parsed_name)

代码细节解释

  1. 带逗号的场景:用^([^,]+),匹配字符串开头到第一个逗号的内容,[^,]+表示匹配任意非逗号的字符,捕获组([^,]+)就是我们要的姓名主体,最后用strip()处理可能的前后空格(比如输入是" Mary, Sr "也能正确提取"Mary")。
  2. 带点的缩写场景:用re.findall(r'[A-Za-z]', ln)筛选出所有字母字符,再用''.join()把它们拼接成无点的连续字符串,比如"J.T.R"就会转换成"JTR"。

这样两种情况都能完美处理啦,你可以测试不同的输入看看效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:39:44