Ende = '' funktioniert nicht (Python)

2016-05-10 11 views
1

Ich versuche, die Ausgabe meines Programms alle in einer Zeile zu bekommen, und wenn ich "end = '" drucke, scheint es nicht zu funktionieren. Irgendwelche Ideen?Ende = '' funktioniert nicht (Python)

Hier ist mein Code:

import random 

thesaurus = {} 
with open('thesaurus.txt') as input_file: 
    for line in input_file: 
     synonyms = line.split(',') 
     thesaurus[synonyms[0]] = synonyms[1:] 

print ("Total words in thesaurus: ", len(thesaurus)) 

# input 
phrase = input("Enter a phrase: ") 

# turn input into list 
part1 = phrase.split() 
part2 = list(part1) 


newlist = [] 
for x in part2: 
    s = random.choice(thesaurus[x]) if x in thesaurus else x 
    s = random.choice(thesaurus[x]).upper() if x in thesaurus else x 
    newlist.append(s) 

newphrase = ' '.join(newlist) 

print(newphrase, end=' ') 

Gerade jetzt, aus irgendeinem Grund, mein Programm ausdrucken:

i LOVE FREEDOM 
SUFFICIENCY apples 

mit dem Eingang "i Äpfel gerne essen"

und die erwartete Ausgabe ist:

i LOVE FREEDOM SUFFICIENCY apples 

Jede Hilfe wird geschätzt !!

Antwort

1

Es ist überhaupt kein Problem mit end=''. Aus der Datei gelesene Zeilen haben immer noch den Zeilenumbruch. Wenn Sie die Linie geteilt, wird der letzte Eintrag eine neue Zeile hat wie bei diesem Beispiel:

>>> 'foo,bar,baz\n'.split(',') 
['foo', 'bar', 'baz\n'] 

Ihr Problem ist, dass Sie nicht nur "FREEDOM\n""FREEDOM" ersetzt. Streifen Sie die Linie vor der Verwendung einfach ab:

thesaurus = {} 
with open('thesaurus.txt') as input_file: 
    for line in input_file: 
     synonyms = line.strip().split(',') 
     thesaurus[synonyms[0]] = synonyms[1:] 
Verwandte Themen