使用pyspark验证电子邮件地址

2024-06-16 10:36:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了使用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])

Tags: columns代码dfes电子邮件地址extractpyspark
1条回答
网友
1楼 · 发布于 2024-06-16 10:36:03

有许多“解决方案”可用于确定可确保符合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}')

相关问题 更多 >