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

如何用Python脚本提取Quick Sight报告中邮箱的纯域名

提取QuickSight中邮件域名并去除-delete后缀的Python实现

问题场景

在QuickSight报告的某列中,数据存储格式如下:

{
    `jeanette.underwood@crowe.com-delete`
    `isaac@accumulus.cpa-delete`
    `veronica@accumulus.co-delete`
    `BDengler@alloysilverstein.com-delete-delete-delete-delete-delete`
    `mhahn@andersonadvisors.com-delete-delete`
}

我们需要提取出纯域名,期望输出为:

{
    `crowe.com`
    `accumulus.cpa`
    `accumulus.co`
    `alloysilverstein.com`
    `andersonadvisors.com`
}

当前使用的QuickSight内置脚本:

trim(substring({Reg Email Id},locate({Reg Email Id},'@',1)+1,strlen({Reg Email Id})-locate({Reg Email Id},'@',1)))

只能提取@之后的内容,但无法去除末尾重复出现的-delete后缀,因此需要用Python实现精准提取。

Python实现方案

方法1:字符串分割法

通过两次分割直接定位域名部分,逻辑简单直观:

def get_pure_domain(email_item):
    # 先切分@符号,取后半段
    after_at = email_item.split('@')[-1]
    # 按-delete切分,取第一段就是纯域名
    pure_domain = after_at.split('-delete')[0]
    # 清理掉前后的反引号和空格
    return pure_domain.strip('` ')

# 测试用的原始数据
raw_items = [
    "`jeanette.underwood@crowe.com-delete`",
    "`isaac@accumulus.cpa-delete`",
    "`veronica@accumulus.co-delete`",
    "`BDengler@alloysilverstein.com-delete-delete-delete-delete-delete`",
    "`mhahn@andersonadvisors.com-delete-delete`"
]

# 处理并按期望格式输出
print("{")
for item in raw_items:
    print(f"    `{get_pure_domain(item)}`")
print("}")

方法2:正则表达式法

用正则精准匹配@之后、第一个-delete之前的内容,适配更多边缘情况:

import re

def get_pure_domain(email_item):
    # 匹配@后到第一个-delete前的内容
    domain_match = re.search(r'@([^-]+)(?=-delete)', email_item)
    if domain_match:
        return domain_match.group(1).strip()
    # 兼容没有-delete后缀的情况
    fallback_match = re.search(r'@([^\s`]+)', email_item)
    return fallback_match.group(1).strip() if fallback_match else ""

# 测试用的原始数据
raw_items = [
    "`jeanette.underwood@crowe.com-delete`",
    "`isaac@accumulus.cpa-delete`",
    "`veronica@accumulus.co-delete`",
    "`BDengler@alloysilverstein.com-delete-delete-delete-delete-delete`",
    "`mhahn@andersonadvisors.com-delete-delete`"
]

# 处理并按期望格式输出
print("{")
for item in raw_items:
    print(f"    `{get_pure_domain(item)}`")
print("}")

两种方法都能完美处理重复-delete的场景,输出符合要求的纯域名。如果是在QuickSight中集成,可以将上述逻辑封装为自定义函数用于数据预处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:12:50