Python正则表达式-从长字符串中检测和删除电子邮件地址

Python正则表达式-从长字符串中检测和删除电子邮件地址,python,regex,Python,Regex,我有一个包含电子邮件地址的长字符串。其中大多数具有以下形式的副本: addresses = 'zzz@zzz.com <zzz@zzz.com>, aaaaa@aaa.co.uk <aaaaa@aaa.co.uk>, bbb@bbb.org <bbb@bbb.org>,' 等 不幸的是,我无法在Python3中组合适当的正则表达式。有人能帮我吗?你可以在之间搜索: 要特别删除括号和括号之间的地址: emails = re.sub("\<.*?\>

我有一个包含电子邮件地址的长字符串。其中大多数具有以下形式的副本:

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


不幸的是,我无法在Python3中组合适当的正则表达式。有人能帮我吗?

你可以在
之间搜索:

要特别删除括号和括号之间的地址:

emails = re.sub("\<.*?\>", '', addresses)
有人向我指出,在POSIX中使用转义
不是一个好主意。相反,可以这样做:

new_data = ', '.join(i for i in addresses.split() if "<" not in i and ">" not in i)
new_data=','.join(地址中的i代表i.split(),如果“”不在i中)

您可以在
之间搜索:

要特别删除括号和括号之间的地址:

emails = re.sub("\<.*?\>", '', addresses)
有人向我指出,在POSIX中使用转义
不是一个好主意。相反,可以这样做:

new_data = ', '.join(i for i in addresses.split() if "<" not in i and ">" not in i)
new_data=','.join(地址中的i代表i.split(),如果“”不在i中)

您确实有大约两封电子邮件?有兴趣知道您从这里收到这些电子邮件,以及其中一些邮件是否被引用,例如,如果您有
地址='”zzz@zzz.com" , "aaaaa@aaa.co.uk" , "bbb@bbb.org““
然后运行
email.utils.getaddresses([addresses])
只需对第二个元素进行一点后处理,就可以很好地工作……Jon Clements-是的,我有双精度:-)字符串中没有地址的真正重复
地址
。事实上,根据,电子邮件地址可以放在尖括号之间,前面加上显示名称。实际上,您确实有大约两倍的电子邮件?有兴趣知道您从这里收到这些电子邮件,以及其中一些电子邮件是否真的被引用,例如,如果您有
地址='”zzz@zzz.com" , "aaaaa@aaa.co.uk" , "bbb@bbb.org"“
然后运行
email.utils.getaddresses([addresses])
并进行一些后期处理,只取第二个元素,效果很好……Jon Clements-是的,我有两个:-)字符串
addresses
中没有真正的地址重复。事实上,根据他的说法,电子邮件地址可以放在尖括号之间,前面加上显示名称。他想捕获不在括号内的地址。逃逸
是一个非常糟糕的主意。在POSIX中,
\
是单词边界。最佳做法是只逃避必须逃避的事情。@Ajax1234谢谢,它工作得很好,特别是在。。。版本,因为这一个不涉及没有重复的电子邮件地址,非常感谢:-)他想捕获不在括号内的地址。转义
是一个非常糟糕的主意。在POSIX中,
\
是单词边界。最佳做法是只逃避必须逃避的事情。@Ajax1234谢谢,它工作得很好,特别是在。。。版本,因为此版本不涉及没有副本的电子邮件地址,非常感谢:-)
 'zzz@zzz.com , aaaaa@aaa.co.uk , bbb@bbb.org ,'
new_data = ', '.join(i for i in addresses.split() if "<" not in i and ">" not in i)