在pyspark的when子句中使用not rlike

时间:2019-05-30 17:39:22

标签: python regex dataframe pyspark

我正在尝试验证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电子邮件。

0 个答案:

没有答案