如何在Python中删除正则表达式(re)的重复结果

时间:2017-09-20 02:55:13

标签: python expression

有一个字符串:

str = 'Please Contact Prof. Zheng Zhao: <a href="mailto:zheng.z@xxx.com">Zheng.Z@xxx.com</a> for details, or our HR: john.will@xxx.com'

我想解析该字符串中的所有电子邮件,因此我设置了:

p = r'[\w\.]+@[\w\.]+'
re.findall(p, str)

结果是:

['zheng.z@xxx.com', 'Zheng.Z@xxx.com', 'john.will@xxx.com']

显然,第一个和第二个是重复的。我们如何防止这种情况发生?

1 个答案:

答案 0 :(得分:4)

您可以使用set删除重复项。 set就像无序的list,它不能包含重复项。在这种情况下,您不必关心案例,因此将结果设为小写会让您正确检查重复项。

import re

s = 'Please Contact Prof. Zheng Zhao: <a href="mailto:zheng.z@xxx.com">Zheng.Z@xxx.com</a> for details, or our HR: john.will@xxx.com'

p = r'[\w\.]+@[\w\.]+'
list(set(result.lower() for result in re.findall(p, s)))