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