如何清洗邮箱字符串列表,仅保留指定前缀的邮箱地址?
批量过滤企业邮箱列表,仅保留指定前缀的邮箱地址
你有格式统一的企业邮箱记录,每条包含企业名称和多个同域名邮箱,需要过滤掉所有非info、contact前缀的邮箱,只保留符合要求的条目。
输入示例:
Business Name 01 email@business01.com; info@business01.com; admin@business01.com; other@business01.com; contact@business01.com; Business Name 02 email@business02.com; info@business02.com; admin@business02.com; other@business02.com; contact@business02.com; Business Name 03 email@business03.com; info@business03.com; admin@business03.com; other@business03.com; contact@business03.com;
期望输出:
Business Name 01 info@business01.com; contact@business01.com; Business Name 02 info@business02.com; contact@business02.com; Business Name 03 info@business03.com; contact@business03.com;
方案1:文本编辑器正则替换(VS Code/Sublime Text等)
适合快速处理文本文件,步骤如下:
- 打开目标文本文件
- 打开替换功能(VS Code按
Ctrl+H,Sublime按Ctrl+Shift+H) - 勾选「正则表达式」选项
- 查找内容:
(\s+)(?!info|contact)\w+@\w+\.\w+; - 替换内容:留空(直接删除匹配内容)
- 点击「全部替换」完成过滤
方案2:Python脚本批量处理
适合大量数据或自动化场景,示例代码:
# 读取输入文件 with open('input_emails.txt', 'r', encoding='utf-8') as f: lines = f.readlines() processed_lines = [] for line in lines: # 分割企业名称与邮箱段(假设分隔符为4个空格,可根据实际调整) parts = line.split(' ') if len(parts) != 2: processed_lines.append(line) continue business_name, emails_str = parts # 拆分并过滤邮箱 emails = [e.strip() for e in emails_str.split(';') if e.strip()] filtered = [e for e in emails if e.startswith(('info@', 'contact@'))] # 重新拼接行内容 new_line = f"{business_name} {'; '.join(filtered)};\n" processed_lines.append(new_line) # 写入输出文件 with open('output_emails.txt', 'w', encoding='utf-8') as f: f.writelines(processed_lines)
方案3:Excel公式处理
若数据在Excel中,假设企业名在A列、邮箱列表在B列,在C列输入以下公式:
=TEXTJOIN("; ",TRUE,FILTERXML("<t><s>"&SUBSTITUTE(B1,"; ","</s><s>")&"</s></t>","//s[starts-with(.,'info@') or starts-with(.,'contact@')]"))&";"
操作步骤:
- 在C1单元格输入公式
- 下拉填充至所有行
- 复制C列结果,粘贴为值到目标列即可
内容的提问来源于stack exchange,提问作者kylie2675647
相关产品推荐
相关产品推荐

