2016-03-28 12 views
-1

Ich habe eine TXT-Datei mit folgendem Format:Python, in einer Datei, die durch Komma getrennte Werte hat, nach doppelten Werten zwischen Zeilen suchen und doppelte Zeilen löschen?

  • 01, Spanien
  • 02, USA
  • 03, Indien
  • 01, Italien
  • 01, Portugal
  • 04, Brasil

Ich muss überprüfen, ob die Zahlen wiederholt werden, wie in diesem Beispiel Die Nummer "01" hat Spanien, Italien und Portugal. Wenn zwei oder mehr Zeilen die gleiche Anzahl haben, ich brauche nur die erste Erscheinung der wiederholten Zahl zu halten und loszuwerden, die anderen apparitions.It bekommen würde dies in der Datei anzuzeigen:

  • 01, Spanien
  • 02, USA
  • 03, Indien
  • 04, Brasil
+0

dies ist eine Antwort für jede Woche, mit nur ein paar Minuten der Suche könnten Sie die Antwort gefunden haben. – Netwave

Antwort

-1
# Read your entire file into memory. 
my_file = 'my_file.txt' 
with open(my_file) as f_in: 
    content = f_in.readlines() 

# Keep track of the numbers that have already appeared 
# while rewriting the content back to your file. 
numbers = [] 
with open(my_file, 'w') as f_out: 
    for line in content: 
     number, country = line.split(',') 
     if not number in numbers: 
      f_out.write(line) 
      numbers.append(number) 

Ich hoffe, dies ist am einfachsten zu verstehen.

-1
import sets 
seen = sets.Set() 
with open('in.txt', 'r'), open('out.txt', 'w') as fr, fw: 
    for line in fr: 
     row = line.split(',') 
     if row[0] not in seen: 
      fw.write(line) 
      seen.add(row[0]) 
-1
import os 
with open("file.txt", "r") as infile: 
    numbers = set() 
    f = open("_file.txt", "w") 
    for line in infile: 
     tokens = line.split(',') 
     if int(tokens[0]) not in numbers: 
      numbers.add(int(tokens[0])) 
      f.write(line) 
    f.close() 
os.remove("file.txt") 
os.rename("_file.txt", "file.txt") 
Verwandte Themen