2017-02-09 3 views
0

Ich habe eine Textdatei mit verschiedenen Codes (ein Code pro Zeile) in einer Spalte und einige von ihnen erscheinen mehr als einmal (immer in der Reihenfolge). Ich würde gerne wissen, wie ich diese Zeilen mit wiederholten Werten entfernen kann.So entfernen Sie Zeilen mit wiederholtem Wert aus einer Textdatei

Beispiel: File1.DAT

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

würde ich die Ausgabe sein mag:

84578  
84581  
84627  
84761  
84792  
84886  
84905 

Hinweis: In meiner Datei gibt es keine leeren Räume zwischen den Linien. Jede Lösung würde tun, Skripte, Terminal-Befehle usw. Vielen Dank im Voraus.

+2

Willkommen bei Stack Overflow! Du scheinst jemanden zu bitten, etwas Code für dich zu schreiben. Stack Overflow ist eine Frage-Antwort-Website, kein Code-Schreibdienst. Bitte [siehe hier] (http://stackoverflow.com/help/how-to-ask) um zu erfahren, wie man effektive Fragen schreibt. – JRodDynamite

+0

'uniq' wie unten, oder' sort -u -o file file' funktioniert auch und ermöglicht Fälle, in denen Daten nicht perfekt sortiert sind. Viel Glück. – shellter

Antwort

2

Da die doppelten Linien sind aufeinander folgende, mit Linux/MSYS Sie einfach uniq

Ausgang mit Ihren Daten verwenden können:

$ uniq lines.txt 
84578 
84581 
84627 
84761 
84792 
84886 
84905 

Python-Lösung Generator Verständnis zu überprüfen, ob erste Zeile oder Linie unterscheidet sich von vorherige die Zeile in der Ausgabedatei zu erteilen:

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

Danke das hat funktioniert. –

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

Dies sollte den Trick tun. Aber auch der Zeilenumbruch existiert nur einmal

Verwandte Themen