您好我有一个以下格式的文本文件:
Sam
John
Peter
Sam
Peter
John
我想从文件中使用REGULAR EXPRESSION提取唯一记录,例如:
Sam
John
Peter
请帮帮我。
答案 0 :(得分:6)
使用set:
In [1]: name="""
...: Sam
...: John
...: Peter
...: Sam
...: Peter
...: John"""
In [2]: print name
Sam
John
Peter
Sam
Peter
John
In [3]: a=name.split()
In [4]: a
Out[4]: ['Sam', 'John', 'Peter', 'Sam', 'Peter', 'John']
In [5]: set(a)
Out[5]: {'John', 'Peter', 'Sam'}
答案 1 :(得分:5)
当然这可以在Regex中完成。不要紧,他们有正确的,O(1)
解决方案,可读性和简洁性,或者任何正则表达式解决方案至少是二次时间的,并且与醉汉的潦草一样可读。
重要的是它的正则表达式和正则表达式必须是好的。你走了:
re.findall(r"""(?ms)^([^\n]*)$(?!.*^\1$)""", target_string)
#>>> ['Sam', 'Peter', 'John']
答案 2 :(得分:4)
似乎要通过按新行拆分输入然后使用set()
删除重复项来创建列表。然后,您可以使用list()
将其转换为列表。看起来像下面的东西。 strip()
用于删除换行符。
names = list(set([x.strip() for x in open('names.txt').readlines()]))