我正在尝试验证PySpark数据框中的电子邮件字段。我已经知道它可以正常工作了,但是我唯一无法理解的是,当我出于无效电子邮件的目的而试图对其进行否定时,它并不总是有效。
有什么办法解决吗?
Name Email EMAIL_VALIDITY_CLASSIFICATION
John . INVALID
Johny johny007@yahoo.com VALID - VERIFIED
Sam xyz@hotmail.com INVALID
这是我正在使用的正则表达式:
EMAIL_REGEX = r'[^@\s]+@[^@\s]+\.[a-zA-Z0-9]+$'
这是我的代码:
df_cleaned = df.withColumn("EMAIL_VALIDITY_CLASSIFICATION", \
when(upper(col("TYPE")) == "VALID","VALID - VERIFIED") \
.when((upper(col("TYPE")) == "DUPLICATES") | (df.EMAIL.rlike(EMAIL_REGEX)),"VALID - UNVERIFIED") \
.when(~ df.EMAIL.rlike(EMAIL_REGEX), "INVALID") \
.when(upper(col("TYPE")) == "NOSUGGESTION", "SPAM") \
.when((upper(col("EMAIL")) == "NULL") | (col("EMAIL") == ""), lit(None)))
我想知道上面使用的代码片段是否正确,以标识INVALID
电子邮件。