嗨,我有一个格式如下的文本文件:
Sam
John
Peter
Sam
Peter
John
我想使用正则表达式从文件中提取唯一记录,例如:
Sam
John
Peter
请帮帮我。
嗨,我有一个格式如下的文本文件:
Sam
John
Peter
Sam
Peter
John
我想使用正则表达式从文件中提取唯一记录,例如:
Sam
John
Peter
请帮帮我。
使用集:
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'}
不要听他们的!
当然,这可以在 Regex 中完成。没关系,他们有正确O(1)
的、可读且简洁的解决方案,或者任何正则表达式解决方案至少是二次时间的,并且与醉汉的潦草书写一样可读。
重要的是它是正则表达式,而正则表达式必须是好的。干得好:
re.findall(r"""(?ms)^([^\n]*)$(?!.*^\1$)""", target_string)
#>>> ['Sam', 'Peter', 'John']
似乎您想通过新行拆分输入然后使用删除重复项来创建一个列表set()
。然后,您可以使用将其转换为列表list()
。看起来像下面。strip()
用于删除换行符。
names = list(set([x.strip() for x in open('names.txt').readlines()]))