Wie verhindere ich, dass Python print Zeilenumbrüche oder Leerzeichen hinzufügt? [duplicate]
Lesezeit: 3 Minuten
Bart
In Python, wenn ich sage
print 'h'
Ich bekomme den Buchstaben h und einen Zeilenumbruch. Wenn ich sage
print 'h',
Ich bekomme den Buchstaben h und keinen Zeilenumbruch. Wenn ich sage
print 'h',
print 'm',
Ich bekomme den Buchstaben h, ein Leerzeichen und den Buchstaben m. Wie kann ich verhindern, dass Python das Leerzeichen druckt?
Die print-Anweisungen sind verschiedene Iterationen derselben Schleife, daher kann ich nicht einfach den +-Operator verwenden.
Meine aktuellen Experimente deuten darauf hin, dass es keine gibt nachlaufend Platz. Stattdessen ist es ein führendes Leerzeichen dann und nur dann, wenn die vorhergehende Ausgabeoperation war a print. Um sich selbst zu sehen, verschachteln Sie einige Anrufe dazu print '.', und sys.stdout.write(','). Das ist verrückt. Warum sollte es sich an das Vorhergehende „erinnern“ und sein Verhalten entsprechend ändern?
Du kannst from __future__ import print_function in Python 2.6
– jfs
2. November 2008 um 18:10 Uhr
aus Zukunft import print_function unterbricht alle anderen print-Anweisungen, die die alte Syntax im selben Modul verwenden, also ist es zwar eleganter als sys.stdout.write, aber es kann mehr Arbeit bedeuten, die Änderung vorzunehmen.
– James
14. Januar 2014 um 17:57 Uhr
Auch praktisch, wenn Sie die letzte Zeile überschreiben müssen, verwenden Sie end='\r'
Sie müssen anrufen sys.stdout.flush() denn sonst hält es den Text in einem Puffer und Sie werden ihn nicht sehen.
Das hat bei mir super funktioniert. Vergessen Sie nur nicht, sys.stdout.flush() auszuführen, wenn Sie bereit sind, es auf dem Bildschirm anzuzeigen, da es es sonst in einem Puffer hält und Sie es nicht sehen. Ich verwende dies, um visuelles Feedback zu geben, dass ein Skript noch ausgeführt wird, wenn es eine lange While- oder For-Schleife durchläuft.
– Nathan Garabedian
8. Mai 2012 um 21:56 Uhr
Wenn das Tippen ein Problem ist, vergessen Sie nicht, dass Sie Folgendes tun können: log = sys.stdout.write
– Andy Chase
27. Juli 2012 um 23:27 Uhr
Um dies zu verwenden, müssen Sie importieren sys durch die Nutzung import sys
– Donald Duck
18. Februar 2017 um 19:49 Uhr
Als Variation dieser Redewendung: prynt = lambda x : sys.stdout.write (str(x))
– Rhabarber
3. Oktober 2017 um 9:36 Uhr
Greg hat Recht – Sie können sys.stdout.write verwenden
Vielleicht sollten Sie jedoch erwägen, Ihren Algorithmus umzugestalten, um eine Liste von und dann zu sammeln
lst = ['h', 'm']
print "".join(lst)
als Variation dieser Redewendung: print ''.join(map(str,[1, '+', 2, '=', 3]))
Meine aktuellen Experimente deuten darauf hin, dass es keine gibt nachlaufend Platz. Stattdessen ist es ein führendes Leerzeichen dann und nur dann, wenn die vorhergehende Ausgabeoperation war a
print
. Um sich selbst zu sehen, verschachteln Sie einige Anrufe dazuprint '.',
undsys.stdout.write(',')
. Das ist verrückt. Warum sollte es sich an das Vorhergehende „erinnern“ und sein Verhalten entsprechend ändern?– Aaron McDaid
4. Dezember 2014 um 13:31 Uhr