Python - Ohne Zeilenumbruch ausgeben?
Ich hab ein Script um per Diceware Methode ein Passwort generieren zu lassen, das script ist noch nicht fertig, jedoch bin ich bei einem Problem.
from random import randint
diceware = open("/path/to/textfile/", "r")
wordlist = diceware.readlines()
for i in range(5):
number = int(("".join(str(randint(1, 6)) for i in range(5))))
for line in wordlist:
if str(number) in line:
print(line.split(" ")[-1], end="")
Das Problem hier ist, dass der output untereinander geschrieben ist:
kabine
tuva
rrrr
sorte
moor
Hätte es aber gerne hintereinander quasi so:
kabine tuva rrrr sorte moor
Hat jemand eine Idee wie das funktionieren könnte?
3 Antworten
Benutze .strip() um den Newline-Character aus dem String zu entfernen.
Ändere deinen Aufruf der print-Methode dafür wie folgt ab:
print(line.split(" ")[-1].strip(), end=" ")
Du möchtest die Zeilen vermutlich strippen.
import random
with open(..) as f:
words=[line.strip() for line in f.readlines() if not line.isspace()]
print("-".join(random.choices(words,k=5)))
Etwas in dieser Art ....
Besser wäre freilich die Nutzung von secrets.
Die mit readlines() gelesenen Zeilen besitzen noch einen Zeilenumbruch, den mußt Du strippen (entfernen).
Hey, erstelle einfach über deinen Schleifen einen String und packe dann jedes Mal unter deiner If-Abfrage das Wort an den String ran, anschließend gibst du nach den Schleifen den String aus.
Ja genau, aber ich weiß nicht genau wie hab ja schon im code end="" stehen aber das hat nicht geholfen ohne end="" wäre der ouput so: