-1

我有一个基本上只有几行但重复多次的文件。我试图从重复的堆栈中取出一行并将其写入不同的文件中。并尝试为所有独特的线条做。
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)

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

4

3 回答 3

2

在某些行的末尾有一些尾随空格,这使事情变得不唯一。
strip()会处理的。

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

a = set(lines)
print a
于 2013-10-18T13:54:14.637 回答
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,但可以通过在最后一个条目之后在文本文件中创建一个新行来轻松绕过这一点。

于 2013-10-18T13:56:53.723 回答
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')
于 2013-10-18T14:00:33.467 回答