Python Regex - 从长字符串中检测和删除电子邮件地址

时间:2017-09-11 15:18:23

标签: python regex

我有包含电子邮件地址的长字符串。他们中的大多数都有以下形式的重复:

addresses = 'zzz@zzz.com <zzz@zzz.com>, aaaaa@aaa.co.uk <aaaaa@aaa.co.uk>, bbb@bbb.org <bbb@bbb.org>,'

我想删除&lt;&gt;内的副本,因此字符串将是

addresses = 'zzz@zzz.com, aaaaa@aaa.co.uk, bbb@bbb.org,' 

不幸的是我无法在Python 3中整合正确的Regex。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您只需在<>

之间进行搜索即可
import re
addresses = 'zzz@zzz.com <zzz@zzz.com>, aaaaa@aaa.co.uk <aaaaa@aaa.co.uk>, bbb@bbb.org <bbb@bbb.org>,'

emails = ', '.join(re.findall("\<(.*?)\>", addresses))

输出:

'zzz@zzz.com, aaaaa@aaa.co.uk, bbb@bbb.org'

要明确删除它们之间的括号和地址:

emails = re.sub("\<.*?\>", '', addresses)

输出:

 'zzz@zzz.com , aaaaa@aaa.co.uk , bbb@bbb.org ,'

有人向我指出,在POSIX中使用时,转义<>并不是一个好主意。相反,这可以做到:

new_data = ', '.join(i for i in addresses.split() if "<" not in i and ">" not in i)