2017-05-02 2 views
-1

Ich versuche, ein Programm zu erstellen, das in der Lage sein sollte, eine Datei in eine Liste von Wörtern und eine Liste von Positionen zu komprimieren, um die ursprüngliche Datei neu zu erstellen. Es sollte auch in der Lage sein, eine komprimierte Datei zu erstellen und den vollständigen Text einschließlich der Zeichensetzung und Großschreibung der ursprünglichen Datei neu zu erstellen.Erneutes Erstellen eines Satzes, neu erstellten Satz fehlt alle Kommas

Bisher habe ich dies:

file = open("task3paragraph.txt", "w") 
file.write ("Two little dicky birds sitting on a wall, one named Peter, one 
named Paul. Fly away Peter, fly away Paul, come back Peter, come back 
Paul.Into the gardens the little birds go, looking for worms that hide down 
low. Peter can’t catch one, neither can Paul, back home Peter, back home 
Paul!") 
file.close() 


file = open("task3paragraph.txt", "r") 
paragraph = file.read() 
para = paragraph.split() 
positions = [para.index(x)+1 for x in para] 
para2 = str(para) 
pos = str(positions) 
file.close() 


file = open("task3lists.txt", "w") 
file.write(para2) 
file.write("\n") 
file.write(pos) 
file.close() 


file = open("task3lists.txt", "r") 
words = file.readlines() 
sentence = words[0].replace(" 
[","").replace("]","").replace("'","").replace(",","") 
file.close() 


file = open("task3recreated", "w") 
file.write(sentence) 
file.close() 

Und es funktioniert perfekt, außer gegen Ende, wenn ich es lief, weil die neu erstellt Satz keine Kommas hatte:

Zwei kleine Dicky Vögel sitzen auf eine Mauer namens Peter namens Paul. Flieg weg Peter fliegt weg Paul komm zurück Peter komm zurück Paul.In den Gärten suchen die kleinen Vögel nach Würmern, die sich tief verstecken. Peter kann nicht eins fangen, kann auch nicht Paul zurück nach Hause Peter zurück nach Hause Paul!

Es fehlte all Kommas, dass der ursprüngliche Satz hat:

Zwei kleine Dicky Vögel sitzen auf einer Mauer, eines mit dem Namen Peter, eines mit dem Namen Paul. Flieg weg Peter, flieg weg Paul, komm zurück Peter, komm zurück Paul. In die Gärten gehen die kleinen Vögel, auf der Suche nach Würmern, die sich tief verstecken. Peter kann keinen fangen, auch nicht Paul, zurück nach Hause Peter, zu Hause Paul!

Ich möchte meinen neu erstellten Satz die gleiche Anzahl von Kommas wie mein Original haben. Wie repariere ich es?

  • Auch entfernte ich die .replace (" """) und das machte es noch schlimmer, weil es mir zu viele Kommata gab:

    Zwei, wenig, Dicky, Vögel, sitzend, auf eine, Mauer, eins, genannt, Peter, eins, genannt, Paul., Fliege, weg, Peter, flieg, weg, Paul, komm, zurück, Peter ,, komm, zurück, Paul.Into, der die Gärten, die, kleine, Vögel, gehen, suchen, für, Würmer, dass, verstecken, unten, niedrig., Peter, kann nicht fangen, man ,, weder, kann, Paul ,, zurück, nach Hause, Peter ,, zurück, nach Hause, Paul!

+0

Nun, Sie haben 'ersetzen (", "," ")', also suchen Sie aktiv nach Kommas und ersetzen sie stattdessen durch leere Zeichenfolgen. Was passiert, wenn Sie das entfernen? – roganjosh

+0

@roganjosh Ich probierte das und bekam nach jedem Wort ein Komma, manchmal zwei Kommas nach jedem Wort. –

+0

Ok, das Problem ist, dass Sie die _string Darstellungen_ der Liste in 'para2 = str (para)' usw. speichern Wenn Sie eine Liste mit Elementen haben, haben Sie eine Zeichenfolge, die wie eine Liste aussieht, und die (visuellen) Kommas, die Elemente in der Liste getrennt haben, sind unerwünschte, echte Kommas in dieser Zeichenfolge geworden. Es gibt ein paar Möglichkeiten, dies zu erreichen, entweder durch eine andere Art, die Rohdaten zu speichern, oder nach diesem Problem aufzuräumen, was meiner Meinung nach weniger nützlich ist. Von der Aufgabe, denke ich, sollten Sie die Daten als einzelne Zeilen in der Datei speichern, nicht eine ganze Zeichenfolge, aber ich bin mir nicht sicher. – roganjosh

Antwort

0

Sie können ersetzen:

sentence = words[0].replace("[","").replace("]","").replace("'","").replace(",","") 

mit:

sentence = words[0].replace("[","").replace("]","").replace("',","").replace("'", "") 

Anstatt alle Kommas mit leeren Zeichenfolgen zu ersetzen, sollten Sie nur die Kommas ersetzen, die durch ein Zitat vorangestellt werden Kennzeichen.

+0

vielen Dank, es funktioniert jetzt! –

Verwandte Themen