-1

基本的に数行のファイルを持っていますが、複数回繰り返されています。繰り返されるスタックから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()

これは最後の結果を 2 回書き込みますが、最後の結果には末尾に \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 に答える