返回所有值,其中包含来自python中的字典的特定文本

时间:2019-02-27 17:38:44

标签: python regex

如何以逗号分隔值的形式返回列表中包含特定文本/字符串的所有值?

我有这样的电子邮件列表:

emails = ['email@example.com',
'email1@example.com',
'email2@example.com',
'emaila@emailexample.com',
'emailb@emailexample.com',
'email33@examplex.com',
'emailas44@exampley.com',
'emailoi45@exampley.com',
'emailgh@exampley.com']

我想要做的是像这样从同一域获取所有电子邮件:

Website = 'example.com'
Email = 'email@example.com','email1@example.com','email2@example.com'

以此类推。...

到目前为止,我已经尝试过此方法,但无法弄清楚我如何实现这一目标,如果有人帮助我,那将非常好,谢谢。

def Email(values, search):
    for i in values:
        if search in i:
            return i
    return None

data = Email(emails, 'example.com')
print(data)

2 个答案:

答案 0 :(得分:2)

您永远不需要正则表达式。使用列表理解功能,利用str.endswith()来查找末尾具有匹配字符的字符串:

emails = ['email@example.com',
          'email1@example.com',
          'email2@example.com',
          'emaila@emailexample.com',
          'emailb@emailexample.com',
          'email33@examplex.com',
          'emailas44@exampley.com',
          'emailoi45@exampley.com',
          'emailgh@exampley.com'] 
Website = 'example.com'

print([email for email in emails if email.endswith(f'@{Website}')])
# ['email@example.com', 'email1@example.com', 'email2@example.com']

答案 1 :(得分:1)

您将在第一次迭代本身中返回值,这就是为什么您无法获得结果的原因。您可以将电子邮件存储在i中,然后返回用逗号分隔的值。

修改方法:

list

希望这能回答您的问题!