使用python在其他重复行中找到唯一的行

时间:2013-10-18 13:38:22

标签: python file repeat

我的文件基本上只有几行,但重复多次。我试图从重复的堆栈中取一行并将其写入不同的文件中。并尝试为所有独特的线条做 我的file有点跟随:

F Fluorin B 91
F Fluorin B 91
F Fluorin B 91
F Fluorin B 91  
I Iodin  C 22
I Iodin  C 22   
Cl chlorine D 21
Cl chlorine D 21
Cl chlorine D 21
Cl chlorine D 21
Cl chlorine D 21
Cl chlorine D 21 

和期望的输出是:

F Fluorin B 91 
I Iodin  C 22
Cl chlorine D 21

我的代码是:

seen = set()
uniqueEntry = []
for line in inp:
        if line not in seen:
            uniqueEntry = line.split('[]')
            seen.add(line)

但我没有得到理想的结果 欢迎任何想法。
谢谢。

3 个答案:

答案 0 :(得分:2)

你的某些行的末尾有一些尾随的空格,这使得事物变得非常独特 strip()会照顾到这一点。

with open('test.txt') as f:
    lines = [line.strip() for line in f]

a = set(lines)
print a

答案 1 :(得分:1)

x=open("file.txt")
f=open("fil2.txt", "w")
result=[]
for line in x:
    if line not in result:
        result.append(line)
for line in result:
    f.write(line)
f.close()
x.close()

虽然这会将最后一个结果写入两次,但由于最后一个结果的末尾没有\ n,因此可以通过在最后一个条目后在文本文件中创建一个新行来轻松绕过它。

答案 2 :(得分:0)

In [12]: s = """F Fluorin B 91
   ....: F Fluorin B 91
   ....: F Fluorin B 91
   ....: F Fluorin B 91  
   ....: I Iodin  C 22
   ....: I Iodin  C 22   
   ....: Cl chlorine D 21
   ....: Cl chlorine D 21
   ....: Cl chlorine D 21
   ....: Cl chlorine D 21
   ....: Cl chlorine D 21
   ....: Cl chlorine D 21"""
In [13]: a = [v.strip() for v in s.split('\n')]
In [14]: from itertools import groupby
In [15]: zip(*groupby(a))[0]
Out[15]: ('F Fluorin B 91', 'I Iodin  C 22', 'Cl chlorine D 21')