2017-02-15 14 views
-3

Ich lese eine Textdatei. Und der Inhalt, ich entfernte Interpunktionszeichen, änderte alles in Kleinbuchstaben und schließlich druckte ich jedes Wort in einer neuen Zeile. Aber das Problem, das ich jetzt habe, ist das Sortieren dieser Inhalte alphabetisch, die ich danach in einer neuen Textdatei speichern soll. Im Moment kann ich die (sort-Methode) nicht verwenden, jedes Mal, wenn ich den .method-accessifier eintippe, geht es mir nicht wie bei der sort-Methode. SO meine Frage ist, nach den früheren Textmanipulationen, die ich getan habe, wie oben gesagt, wie sortiere ich sie alphabetisch?Inhalt in Textdatei mit Python sortieren

punctuations = '''!()-[]{};:'"\,<>./[email protected]#$%^&*_~''' 
no_punct = "" 

#Open file 
file = "research.txt" 
f = open(file , 'r+') 

#read file 
contentOfFile = f.read() 


#Remove punctuations from file content 
for char in contentOfFile: 
    if char not in punctuations: 
     no_punct = (no_punct + char) 


#print "Output of formatted document is" 
for word in no_punct.lower().split(): 
    print word 

Mit der obigen und nachfolgenden Hilfe, die ich bekam, konnte ich endlich Meilensteine ​​erreichen. Aber ich habe bemerkt, wenn ich auf der Konsole drucke, druckt es gut, aber wenn ich versuche, eine neue Datei zu erstellen und Wörter so zu speichern, wie es auf der Konsole erscheint, werden die Wörter nicht formatiert, wenn sie in einer neuen Datei gespeichert werden. Stattdessen werden alle Wörter in einer langen geraden Linie gespeichert. Nachdem ich eine neue Textdatei namens "newFile.txt" erstellt habe, habe ich nf.write (word) hinzugefügt. Ich dachte, das würde automatisch jeden Text TextFile formatiert und jeder neue Zeile hinzufügen. Ist das falsch? Vielen Dank.

punctuations = '''!()-[]{};:'"\,<>./[email protected]#$%^&*_~''' 
no_punct = "" 

#Open file 
file = "research.txt" 
f = open(file , 'r+') 


#read file 
contentOfFile = f.read() 


#Remove punctuations from file content 
for char in contentOfFile: 
    if char not in punctuations: 
     no_punct = (no_punct + char) 


#create new file to save formatted words to 
newFile = "newFile.txt" 
nf = open(newFile , 'w+') 


#write words to the new textFile 
for word in sorted(no_punct.lower().split()): 
    nf.write(word) 


    #print word 
+0

@ZdaR, was meinst du mit 'sort (list)'? Es gibt keine eingebaute Funktion "sort". –

+0

Möchten Sie jedes einzelne Wort oder jede Zeile alphabetisch sortieren? –

+0

Danke für die Antwort. Entschuldigung, ich war nicht sehr klar in meiner Erklärung. Obwohl meine Frage von @pschill beantwortet wurde – user3761841

Antwort

0

Sie könnten sorted verwenden:

for word in sorted(no_punct.lower().split()): 
    print word 

Wenn Sie das Ergebnis in eine Datei Zeile für Zeile schreiben möchten, können Sie dies versuchen:

with open("newFile.txt", "w") as f: 
    for word in sorted(no_punct.lower().split()): 
     f.write(word + os.linesep) 

Natürlich müssen Sie import os hinzufügen bei der Anfang Ihrer Datei, so dass das Newline-Zeichen os.linesep gefunden wird.

+0

Vielen Dank. Das hat gut für mich funktioniert. – user3761841

+0

Viel viel Dank .... – user3761841

+0

und Speichern dieser neuen sortierten Wörter in eine Textdatei? Wie gehe ich vor? Habe ich gerade dieses Format 'f = open ("newText.txt", "w")' – user3761841

-1
word_in_file = no_punct.lower().split() 
word_in_file.sort() 

Ist diese Arbeit für Sie?

+0

Mit Blick auf meine Punktzahl denke ich, die Antwort ist nein: p was nicht funktioniert? – rmeertens

+0

Eigentlich tat es. Ich habe die Antwort vom Benutzer oben verwendet. Sie haben sie zwar alphabetisch ausgedruckt, aber es ist erforderlich, dass jedes Wort in einer neuen Zeile gedruckt wird. Aber das sagte, deine hat gut funktioniert. Danke ... – user3761841