2016-05-26 10 views
-2

Hallo, mache derzeit einen Code, wo das Programm zwei Dateien eins mit Positionen von Wörtern die anderen Wörter den folgenden Code kombiniert sie jedoch verbindet, wenn ich meinen Code aus einer Datei importiert werden, die ich bekomme der folgende Fehler (falls compressed_sentence [(int (i) -1)] == unkomprimiert: ValueError: ungültiges Literal für int() mit Basis 10: "['1',")Python Hilfe! ungültiges Literal für int() mit der Basis 10:

hier ist mein Code aswell:

uncompressed = 0 

file1 = open ("NonDupT2.txt" , "r") 
compressed_sentence=file1.read() 
file1.close() 

file1 = open ("PositionT2.txt" , "r") 
compressed_Positionsonly=file1.read() 
file1.close() 

compressed_Positions= compressed_Positionsonly.split() 

print(str(compressed_Positions)) 

for i in compressed_Positions: 
    if compressed_sentence[(int(i)-1)]==uncompressed:  
     print(compressed_sentence[(int(i))]) 
     uncompressed = compressed_sentence[(int(i))] 

    else: 
     print(compressed_sentence[(int(i)-1)]) 
     uncompressed=compressed_sentence[(int(i)-1)] 

    print(str(int(i))) 

aber es funktioniert, wenn die Variablen durch das Programm detemined sind

uncompressed = 0 

compressed_sentence = ['hello' , 'hello' , 'why' , 'hello' , 'lmao'] 
compressed_Positions = ['1' , '1' , '2' , '1' , '3'] 

print(str(compressed_Positions)) 

for i in compressed_Positions: 

    if compressed_sentence[(int(i)-1)]==uncompressed:  
     print(compressed_sentence[(int(i))]) 
     uncompressed = compressed_sentence[(int(i))] 

    else: 
     print(compressed_sentence[(int(i)-1)]) 
     uncompressed=compressed_sentence[(int(i)-1)] 

    print(str(int(i))) 

Antwort

0

Das Problem ist, dass die compressed_Positions falsch gelesen werden. Die Datei liest den Inhalt als eine Zeichenfolge. Diese Zeichenfolge ist der gesamte Inhalt der Textdatei.

Der Split-Operator erstellt eine Liste von Strings. Das erste Element dieser Liste ist alles aus der Datei bis zum ersten Platz und das scheint

'[1,' 

Und das ist das, was von int interpretiert wird() und das funktioniert nicht. Ich denke, dass Ihr PositionT2.txt enthält:

[1, 1, 2, 1, 3] 

Es funktioniert, wenn sie enthalten:

1 1 2 1 3 

Um das Programm zu machen das gleiche wie das Beispiel mit der expliziten Definition arbeiten, benötigen Sie einen Split-Operator für compressed_sentences auch und Ihre NonDupT2.txt Datei muss

hello hello why hello lmao 

Statt Leerzeichen enthalten, können Sie auch die Zeilenumbrüche als Trennzeichen in der Textdatei verwenden.

Viel Glück, Joost

Verwandte Themen