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

如何在tidyverse中基于邮箱格式过滤表格并筛选非垃圾邮箱

解决方案

一、用tidyverse整合邮箱过滤逻辑

不用多次str_split拆分字符串,直接用正则表达式结合dplyr::filter就能高效完成过滤,代码示例如下:

library(tidyverse)

# 假设你的数据框名为df,邮箱列名为email
filtered_df <- df %>%
  filter(
    # 排除@符号前仅含数字的邮箱
    !grepl("^\\d+@", email),
    # 排除@符号后、.com后缀前仅含数字的邮箱
    !grepl("@\\d+\\.com$", email)
  )

正则表达式说明:

  • ^\\d+@:匹配**以一串数字开头,紧接着@**的邮箱(即@前全是数字的情况),用!取反即可排除这类邮箱
  • @\\d+\\.com$:匹配**@后是一串数字,以.com结尾**的邮箱(即@后到.com前全是数字的情况),同样用!取反排除

你可以用示例数据测试逻辑:

# 示例测试数据
test_df <- tibble(
  email = c("XXX@123.com", "2wsc@111.com", "13625651286@139.com", "valid@example.com")
)

test_df %>%
  filter(
    !grepl("^\\d+@", email),
    !grepl("@\\d+\\.com$", email)
  )
# 最终只会保留valid@example.com

二、R语言中的邮箱垃圾过滤器

R没有内置专门的邮箱垃圾过滤器,但有工具可以辅助邮箱验证和筛选:

  • 格式验证类包:比如validate或emailvalidator,提供is_email()这类函数,可以先过滤格式不合法的邮箱,但无法直接识别垃圾邮箱
  • 自定义规则:像你需求中的这类特定垃圾邮箱规则,用正则表达式自定义过滤是最直接的方案
  • 第三方集成:如果需要更精准的垃圾邮箱识别,可结合第三方反垃圾邮箱服务,但R本身没有对应的专属包,需自行调用API实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:22:29