2017-02-09 80 views
0

我在一列中有一個包含各種代碼(每行一個代碼)的文本文件,其中一些文件會出現多次(總是按順序)。我想知道如何刪除重複值的行。如何從文本文件中刪除具有重複值的行

例子:File1.dat

84578  
84581  
84627  
84761  
84761  
84792  
84792 
84792  
84886  
84886  
84905  
84905  
84905 

我想輸出是:

84578  
84581  
84627  
84761  
84792  
84886  
84905 

注:在我的檔案有行之間沒有空的空間。 任何解決方案都可以,腳本,終端命令等。 在此先感謝。

+2

歡迎來到堆棧溢出!你似乎在要求某人爲你寫一些代碼。堆棧溢出是一個問答網站,而不是代碼寫入服務。請[see here](http://stackoverflow.com/help/how-to-ask)學習如何編寫有效的問題。 – JRodDynamite

+0

'uniq'如下,或者'sort -u -o file file'也可以工作,並且允許數據未被完全排序的情況。祝你好運。 – shellter

回答

2

由於重複的行是連續的,在Linux/MSYS,你可以簡單地使用uniq

輸出與您的數據:

$ uniq lines.txt 
84578 
84581 
84627 
84761 
84792 
84886 
84905 
使用發電機理解

Python的解決方案,以檢查是否第一行或行不同先前發出的輸出文件的行:

with open("lines.txt") as fr,open("uniq.txt","w") as fw: 
    for line in (x for i,x in enumerate(fr) if i==0 or lines[i-1]!=x): 
     fw.write(line) 
+0

謝謝你的工作。 –

-1
file = open("FileWithDublicates.txt","r"); 
lines = file.readlines() 
lines = set(lines) 
file.close 
file = open("FileWithDublicates.txt","w"); 
for line in lines: 
    file.write(line) 

這應該可以做到。 但也行分隔只會存在一次