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

如何提取邮箱域名中的国家代码填充表格空缺的country列

实现方案

核心逻辑

  • 提前准备国家顶级域名(ccTLD)与对应两位国家代码的映射关系
  • 仅修改country字段为空的记录,已有值的记录保持不变
  • 提取邮箱@符号后的完整域名,从域名最右侧开始匹配ccTLD映射
  • 匹配成功则填充对应国家代码,无匹配的空字段统一标记为NA

数据库直接操作(SQL版,以MySQL为例)

-- 第一步:创建国家顶级域名映射表,可自行补全所有需要的ccTLD
CREATE TABLE IF NOT EXISTS cctld_map (
    tld VARCHAR(10) PRIMARY KEY,
    country_code CHAR(2) NOT NULL
);
-- 插入示例映射数据
INSERT IGNORE INTO cctld_map (tld, country_code) VALUES
('.mx', 'MX'),
('.co', 'CO'),
('.cl', 'CL'),
('.ar', 'AR');

-- 第二步:更新参会人表的空country字段,参会人表表名为attendees
UPDATE attendees a
LEFT JOIN cctld_map m 
ON RIGHT(SUBSTRING_INDEX(a.email, '@', -1), LENGTH(m.tld)) = m.tld
SET a.country = COALESCE(m.country_code, '*NA*')
WHERE a.country IS NULL OR a.country = '';

批量数据处理(Python Pandas版,适合千万级以下大规模数据)

import pandas as pd

# 1. 定义ccTLD映射字典,可自行补全所有国家顶级域名
cctld_map = {
    '.mx': 'MX',
    '.co': 'CO',
    '.cl': 'CL',
    '.ar': 'AR'
}

# 2. 读取参会人数据,支持读取csv、excel或者直接连接数据库拉取表
df = pd.read_csv('attendees.csv')

# 3. 筛选country为空的记录
mask = df['country'].isna() | (df['country'] == '')

# 4. 提取域名匹配ccTLD,填充空值
df.loc[mask, 'country'] = df.loc[mask, 'email'].str.split('@').str[-1].apply(
    lambda domain: next(
        (code for tld, code in cctld_map.items() if domain.endswith(tld)),
        '*NA*'
    )
)

# 5. 输出结果,可选择写回数据库或者导出为文件
print(df)
# df.to_csv('attendees_updated.csv', index=False)

补充说明

  • 需根据实际业务需求补全映射表/字典中的所有ccTLD,避免漏匹配
  • 若需支持多层级国家域名(如.co.uk、.com.au),可将映射按后缀长度倒序排序后匹配,优先匹配更长的后缀避免匹配错误

内容的提问来源于stack exchange,提问作者Andrés Felipe Tigreros-Andrade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:06:04