【问题标题】:Validate email address using pyspark使用 pyspark 验证电子邮件地址
【发布时间】:2021-10-20 00:04:54
【问题描述】:

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

【问题讨论】:

标签: python regex pyspark email-validation


【解决方案1】:

对于确保符合 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}')

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2018-03-13
    • 2011-09-02
    • 2013-02-20
    • 2014-03-12
    • 1970-01-01
    相关资源
    最近更新 更多