我有一个带列的Dataframe email_adress_raw
每行包含多个电子邮件地址,我想创建一个新列,其中第一个电子邮件地址的长列表中列出了特定的电子邮件结尾。 email_endings = ['email_end1.com','email_end2.com','email_end3.com',...]
我创建了下面的函数,它已经在工作了,但是由于列表很长并且一直在构建中,我想在代码中对列表进行迭代或者类似的操作。我已经想到了一个循环,但不知怎么的我没有做到这一点。。。
def email_address_new(s):
try:
r = re.search("([\w.-]+@"+email_endings[0]+"|[\w.-]+@"+email_endings[1]+"|[\w.-]+@"+email_endings[2]+")", s).group()
except AttributeError:
print(s)
return None
except TypeError:
print(s)
return None
return r
udf_email_address_new= F.udf(email_address_new, StringType())
df = df.withColumn("email", udf_email_address_new(F.col("email_adress_raw")))
1条答案
按热度按时间3lxsmp7m1#
你可以用
join
要将列表中的电子邮件结尾合并到正则表达式模式,请执行以下操作:但你可能不需要一个自定义项。你可以用
regexp_extract
,并将空字符串替换为null
如果没有对手(regexp_extract
如果不匹配,则返回空字符串)