2013-10-18 86 views
-1

我有一個基本上很少行但重複多次的文件。我試圖從重複的堆棧中取出一行並將其寫入不同的文件中。並試圖去做所有獨特的線條。
file是種以下:使用python查找其他重複行中的獨特行

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) 

但我沒有得到期望的結果。
歡迎任何想法。
謝謝。

+0

你會得到什麼結果? – thumbtackthief

+1

我之所以回答是因爲我現在太累了,無法完成我的實際工作,但如果您希望獲得良好的答案並避免降低成績,那麼一定要包括您得到的結果以及它與您想要的不同之處。 – thumbtackthief

+2

@thumbtackthief謝謝你的好意見......我一定會記住。 – diffracteD

回答

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') 
2

您的某些行的末尾有一些尾隨的空白區域,這些空白區域使事物不唯一。
strip()會照顧到這一點。

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

a = set(lines) 
print a 
+0

你不需要創建一箇中間列表,只需使用'set'和一個生成器表達式:'a = set(line.strip()對於f)' – l4mpi

+0

絕對正確 - 我認爲我的人可能對某人學習有點清楚,但你是對的。 – thumbtackthief

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在它的結束,這是很容易通過後的最後創建的文本文件中的新行旁路條目。