正则表达式,用于与选定域匹配电子邮件

时间:2019-05-03 05:26:03

标签: python regex

我要列出所有与此相关的电子邮件地址:

dane[(dane.imie == "Rhea") & (dane.email == "[*]@ubusive.com")]

以下代码对我有用:

dane[(dane.imie == "Rhea") & (dane.email == "Rhea_Whitehouse7703@ubusive.com@ubusive.com")]

所以我尝试使用类似[*]

的方式更改确切的地址Rhea_Whitehouse7703@ubusive.com(来自生成器的假电子邮件地址)。

我通过添加正则表达式解决了这个问题,但是我需要知道如何实现简单的解决方案,在此先感谢您!

1 个答案:

答案 0 :(得分:0)

我不确定您要寻找的内容,但是据我了解,您想提取具有指定imie(等距的'Rhea')和以'@ubusive结尾的电子邮件的数据框的行。 com”(无论之前有什么)。

因此在这种情况下(让我们生成一个示例数据框):

change

丹妮是

import pandas as pd

dane = pd.DataFrame({'imie' : ['Rhea', 'Rhea', 'Bob', 'Rhea'],
                     'email': ['Rhea_Whitehouse7703@ubusive.com',
                               'Rhea_Whitehouse7703@ubusive.com@ubusive.com',
                               'Bobbybear@ubusive.com',
                               'Rhea_Whitehouse7703@other.com']})

您只想要第0和1行。 如果您的域名始终是“ ubusive.com”,则简单的方法是:

    imie    email
0   Rhea    Rhea_Whitehouse7703@ubusive.com
1   Rhea    Rhea_Whitehouse7703@ubusive.com@ubusive.com
2   Bob     Bobbybear@ubusive.com
3   Rhea    Rhea_Whitehouse7703@other.com

这将给出:

dane[(dane.imie == "Rhea") & (dane.email.str[-12:] == "@ubusive.com")]

如果只希望最后一个域(最后一个“ @”后面的内容),则正则表达式会更有用。 这个...

    imie    email
0   Rhea    Rhea_Whitehouse7703@ubusive.com
1   Rhea    Rhea_Whitehouse7703@ubusive.com@ubusive.com

...将导致以下结果:

search_string = "@ubusive.com"
dane[(dane.imie == "Rhea") & (dane.email.str.extract("(@.*)")[0] == search_string)]

,并且还提供了轻松更改域名搜索字符串的自由。

希望获得帮助,或者,如果不是您要找的帮助,请发表评论。