我在R中编写一个小脚本来检查电子邮件地址是否具有有效的域扩展名。我已经读入并向量化了当前有效扩展名的文件,例如com,英国,商业等等。比方说吧:
valid_domain_extensions <- c('com', 'biz', 'de', 'uk')
然后我得到了一份包含10万条捕获电子邮件的矩阵列表,这些电子邮件是故意以混淆方式写的,例如: name [at] domain / dot / biz。矩阵来自str_match_all正则表达式模式,子组为列。
(编辑添加到这里:)
因此输入将是一个如下所示的矩阵列表:
[,1] [,2] [,3] [,4] [,5] [,6]
[1] name at stackoverflow dot com name at stackoverflow dot com
我想要做的是检查所有100,000个子分组列(即,从我的输入列表中捕获域扩展名的所有[,6] s,看它们是否相等,或者至少有一个来自域扩展矢量的字符串,用于验证。然后吐出规范化的地址。
有没有比我在这里尝试的R-otic方式更好?它有效,但看起来有点笨重。
validationFunction <- function(x){
y <- x[,6]
z <- any((sapply(y, grepl, valid_domain_extensions))) # valid_domain_extensions is a long vector
if (z){
return(paste(x[,2],'@', x[,4], '.', x[,6], sep = "", collapse = NULL))
} else {
return("Invalid Email Address")
}
}
final_list_of_emails <- lapply(tokenized_rough_emails, validationFunction)
print(final_list_of_emails)
感谢。