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

如何定位字符串最后一个@,实现邮箱旧域名精准替换?

邮箱旧域名替换功能修改方案

问题分析

原代码使用email.index("@")定位第一个@符号,会截断第一个@之后、最后一个@之前的所有@符号,无法满足保留所有前置@的需求。

修改思路

使用rsplit('@', 1)从邮箱字符串右侧仅分割一次,将字符串拆分为两部分:

  • 第一部分:包含所有前置@符号在内的内容(比如demo@@@@@)
  • 第二部分:最后一个@之后的域名(比如drungston.com)
    随后判断第二部分是否等于指定旧域名,若是则替换为新域名;同时提前处理新旧域名相同的场景,直接返回原邮箱避免无效操作。

修改后的代码

def replace_email(email, old_domain, new_domain):
    # 新旧域名相同直接返回原邮箱
    if old_domain == new_domain:
        return email
    # 从右侧分割一次@,拆分前置内容和域名
    if '@' in email:
        prefix, domain = email.rsplit('@', 1)
        if domain == old_domain:
            return f"{prefix}@{new_domain}"
    return email

# 测试用例
print(replace_email('demo@@@@@drungston.com','drungston.com','google.com'))  # 输出: demo@@@@@google.com
print(replace_email('test@@@yahoo.com','yahoo.com','yahoo.com'))  # 输出: test@@@yahoo.com

代码说明

  • rsplit('@', 1):确保只拆分最后一个@符号,完整保留前面所有的@和内容
  • 提前判断新旧域名是否相同,减少不必要的字符串操作
  • 先检查邮箱是否包含@符号,避免拆分时抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:36:35