1
我试图从csv中删除'坏'电子邮件地址。我有一列看起来像“[email protected]”,“[email protected]”,“@”或“a”的电子邮件。有各种各样的电子邮件格式,所以我想尝试查找和删除它们。R中部分字符串匹配
我的最初想法是严格看电子邮件字符串的末尾 - “@ ...”部分。然后再看一个字符的长度,所以如果电子邮件只有长度1或2,它是无效的。
如果我有一个错误的电子邮件列表,我想生成一个新的电子邮件列表,其中坏的电子邮件被NA替换。
下面是我到目前为止的代码,但它不工作,并寻找模式上的精确匹配,而不仅仅是字符串的结尾。
email_clean <- function(email, invalid = NA)
{
email <- trimws(email) # remove whitespace
email[nchar(email) %in% c(1,2)] <- invalid
bad_email <- c("\\@no.com", "\\@none.com","\\@email.com","\\@noemail.com")
pattern = paste0("(?i)\\b",paste0(bad_email,collapse="\\b|\\b"),"\\b")
emails <-gsub(pattern,"",sapply(csv_file$Email,as.character))
email
}
Cleaned_Email <- email_clean(csv_file$Email)
谢谢你的帮助!
为什么你要逃避'@'?此外,您最好避开点(例如'no \\。com')。请记住,'no.com'模式与'no.com'匹配,但也使用'noRcom'或'no com'。点表示正则表达式中的任何字符。 – nicola