2016-03-23 6 views
2

Ich habe ein Programm geschrieben, um alle E-Mail-Adressen aus einer Textdatei zu extrahieren, beginnend mit "Von:" Ich erstellte eine Liste, um alle extrahierten E-Mail-Adressen in Liste zu speichern und eine weitere Liste zu erstellen, um nur eindeutige E-Mail-Adressen zu speichern. Jetzt bekomme ich die Ausgabe, aber zur gleichen Zeit bekomme ich Ausgabe, die "set" vor dem Drucken der neuen Liste zeigt dh nach "Drucken Unique_list"Entfernen von doppelten Strings aus der Liste?

Hinweis - Originaltextdatei ist nicht beigefügt, da ich nicht weiß, wie zu tun ist es.

Danke

print "Please enter the file path:\n" 
    text_file = raw_input ("Enter the file name:") 
    print "Opening File\n" 
    #Using try and except to print error message if file not found 
    try: 
    open_file = open (text_file) 
    print "Text file " + text_file + " is opened \n" 
except: 
#Printing error message 
    print "File not found" 
#Using "raise SystemExit" for program termination if file not found 
    raise SystemExit 
#Creating dynamic list to store the no. Email addresses starting from  'From:' 
Email_list = []; 
#Using loop to extract the Email addresses starting from 'From:' 
for line in open_file: 
    if 'From:' in line: 
#Adding each extracted Email addresses at the end of the list 
    Email_list.append(line) 
print "Printing extracted Email addresses\n"  
print Email_list,"\n" 
print "Before removing duplicate Email addresses, the total no. of Email  addresses starting with 'From:'",len(Email_list),"\n" 
#Removing duplicate Email addresses 
Unique_list = set(Email_list) 
#print Email_list.count() 
print "Printing Unique Email addresses\n" 
print (Unique_list) 
print "After removing duplicate Email addresses, the total no. of Email [enter image description here][1]address starting with From:, ",len(Unique_list),"\n")` 

Antwort

1

Ausgabe erhalten, die die neue Liste d.h zeigt ‚set'before Druck nach

"Unique_list drucken"

einfach wandeln es wieder in eine list wieder.

Unique_list = set(Email_list) 
Unique_list = list(Unique_list) 
#print Email_list.count() 
print "Printing Unique Email addresses\n" 
print (Unique_list) 
+0

Hölle, Sie könnten sogar 'unique_list = Liste (set (email_list))' –

+2

Warum aufhören? 'list (set (Zeile für Zeile in open_file wenn 'From:' in der Zeile))' –

+1

so viel wie ich das mag, es hindert mich daran, auf eine 'mit' Aussage zum Fahrradschuppen anzuheften :) –

1

Die Antwort kann vom Ziel abhängen. Es ist nicht klar auf der Grundlage der Frage, ob das Ziel ausschließlich ist, die Adressen in einer bestimmten Weise zu drucken; oder sie nach einigen Annahmen der Lesbarkeit zu drucken. Wenn das Ziel darin besteht, auf eine bestimmte gewünschte Weise zu drucken, kann es gut sein, dass Sie die Ausgabe steuern. anstatt sich auf die integrierte String-Repräsentation der Objekte zu verlassen, die Sie drucken würden.

Ein Beispiel: Statt print Email_list,"\n" Verwendung print print (','.join (Email_list, '\n'))

Wenn Sie möchten, dass die Darstellung einer Liste emulieren, können Sie so etwas wie print ('[\'{list}\']'.format (list = '\', \''.join (Email_list)), '\n') oder vielleicht etwas mehr Zusammenhalt nutzen könnten. In jedem Fall können Sie steuern, wie Sie drucken möchten.

Wenn Sie sich auf intern bestimmte Darstellungen von Objekten zum Drucken verlassen, werden Sie möglicherweise dazu veranlasst, Codierungsüberlegungen basierend auf Fragen der Ausgabe vorzunehmen. und das ist keine Wahl, die die Fähigkeit unterstützt, die beste Codierungswahl für die reine Programmlogik zu treffen.

Oder habe ich deine Frage missverstanden?