Я пытаюсь проверить поле электронной почты в кадре данных 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
электронных писем.