如何以逗号分隔值的形式返回列表中包含特定文本/字符串的所有值?
我有这样的电子邮件列表:
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)
答案 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
希望这能回答您的问题!