使用 pyspark 验证电子邮件地址
Validate email address using pyspark
我已经编写了使用 pyspark 验证电子邮件地址的代码,但得到的电子邮件地址无效。
输入电子邮件地址
alcaraz@lcc@uma.es
输出得到
lcc@ums.es
预期输出
"invalid email address"
代码已尝试
df1 = df.withColumn(df.columns[0], regexp_replace(lower(df.columns[0]), "^a-zA-Z0-9@\._\-| ", ""))
extract_expr = expr(
"regexp_extract_all(emails, '(\\w+([\\.-]?\\w+)*@\[A-Za-z\-\.]+([\\.-]?\\w+)*(\\.\\w{2,3})+)', 0)")
df2 = df1.withColumn(df.columns[0], extract_expr) \
.select(df.columns[0])
对于确保符合 RFC5322 的最终 RE,可以找到许多“解决方案”。这是我用的那个。它可能无法匹配 100% 的情况。
import re
expr = r"[a-z0-9!#$%&'*+/=?^_‘{| }~-]+(?:\.[a-z0-9!#$%&'*+/=?^_‘{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
p = re.compile(expr)
for ema in ['boris@gov.uk', 'alcaraz@lcc@uma.es']:
v = 'valid' if p.match(ema) else 'invalid'
print(f'{ema} is {v}')
我已经编写了使用 pyspark 验证电子邮件地址的代码,但得到的电子邮件地址无效。
输入电子邮件地址
alcaraz@lcc@uma.es
输出得到
lcc@ums.es
预期输出
"invalid email address"
代码已尝试
df1 = df.withColumn(df.columns[0], regexp_replace(lower(df.columns[0]), "^a-zA-Z0-9@\._\-| ", ""))
extract_expr = expr(
"regexp_extract_all(emails, '(\\w+([\\.-]?\\w+)*@\[A-Za-z\-\.]+([\\.-]?\\w+)*(\\.\\w{2,3})+)', 0)")
df2 = df1.withColumn(df.columns[0], extract_expr) \
.select(df.columns[0])
对于确保符合 RFC5322 的最终 RE,可以找到许多“解决方案”。这是我用的那个。它可能无法匹配 100% 的情况。
import re
expr = r"[a-z0-9!#$%&'*+/=?^_‘{| }~-]+(?:\.[a-z0-9!#$%&'*+/=?^_‘{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
p = re.compile(expr)
for ema in ['boris@gov.uk', 'alcaraz@lcc@uma.es']:
v = 'valid' if p.match(ema) else 'invalid'
print(f'{ema} is {v}')