2017-05-11 2 views
-1

Ich habe weit und breit gesucht, kann aber keine Lösung für meine Aufgabe finden. Ich muss in der Lage sein, die Positionen von Wörtern aus einer Eingabe zu erhalten und dann diese und die Wörter (mit entfernten Duplikaten) in eine Notizblockdatei zu speichern. Dann muss ich in der Lage sein, diese Positionen zurückzubringen und den Satz neu zu erstellen. Dies muss jedoch Python getan werden. Um es klarer werde ich ein Beispiel verwenden Sie den Code habe ich bereits geschrieben:Erstelle einen Satz von den ursprünglichen Positionen auf Python

-Der Input-

Would you like to compress or decompress a file? c/d: C 
Please type your string using only letters and punctuation: the dog was a dog that jumped over a log 
Positions saved to file. Ending code 

-Der Daraus resultierende

1 2 3 4 2 5 6 7 4 8 

the dog was a that jumped over log 

Das Problem, das ich habe, ist, dass ich den Satz aus diesen Zahlen oder Wörtern nicht neu erstellen kann, da ich nicht verstehe, wie ich das vervollständige. Der Code, den ich für dieses letzte Bit bis jetzt habe, ist wie folgt:

+0

Wenn Sie die Datei lesen, erhalten Sie nur eine Zeichenfolge. Sie müssen diese Zeichenfolge zuerst in ein Array konvertieren. Vielleicht möchten Sie sich auch ['' split() ''] (https://docs.python.org/3.5/library/stdtypes.html#str.split) ansehen. Im Falle von '' word_index'' sollten Sie auch sicherstellen, dass es sich um ein Array von '' int'' handelt, nicht um ein Array von '' str''! –

Antwort

0

Ihr Code ist unvollständig, also gibt es nichts zu reparieren/vorschlagen.

Diese Zeile sieht für mich in Ordnung:

recreated = ' '.join([word_list[i-1] for i in word_index]) 

was bedeutet, dass word_index fehlenden Wörter ist.

Hinweis: Sie brauchen keine Klammern für dieses Listenverständnis oben. Wenn Sie sie weglassen, erhalten Sie einen Generator, der über iteriert, ohne zuerst eine ganz neue Liste zuzuordnen. Beispiel: ' '.join(a for a in b)

Hier ist eine Lösung. Hoffentlich hilft es Ihnen, den Fehler in Ihrem Code zu sehen.

In [3]: s = 'the dog was a dog that jumped over a log' 

In [17]: i = 1 
    ...: d = {} 
    ...: words = [] 
    ...: sentence = [] 
    ...: for w in s.split(): 
    ...:  if w not in d: 
    ...:   d[w] = i 
    ...:   i += 1 
    ...:   words.append(w) 
    ...:  sentence.append(d[w]) 
    ...: 

In [18]: words 
Out[18]: ['the', 'dog', 'was', 'a', 'that', 'jumped', 'over', 'log'] 

In [19]: sentence 
Out[19]: [1, 2, 3, 4, 2, 5, 6, 7, 4, 8] 

In [20]: ' '.join(words[i - 1] for i in sentence) 
Out[20]: 'the dog was a dog that jumped over a log' 

In [21]: 
+0

Danke! Ich konnte das, was du mir gegeben hast, verwenden, um zu meinem Code zurückzukehren und einen Teil davon neu zu schreiben, um zu tun, was gebraucht wurde. – Ash

Verwandte Themen