Python独特的线条

时间:2013-09-27 10:55:26

标签: python

您好我有一个以下格式的文本文件:

Sam
John
Peter
Sam 
Peter
John

我想从文件中使用REGULAR EXPRESSION提取唯一记录,例如:

Sam
John
Peter

请帮帮我。

3 个答案:

答案 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()]))