Wie verhindere ich, dass Python print Zeilenumbrüche oder Leerzeichen hinzufügt? [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
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?

    – Aaron McDaid

    4. Dezember 2014 um 13:31 Uhr

Benutzer-Avatar
Federico A. Ramponi

Im Python 3verwenden

print('h', end='')

um das Endline-Terminator zu unterdrücken, und

print('a', 'b', 'c', sep='')

um das Leerzeichen-Trennzeichen zwischen Elementen zu unterdrücken. Sehen die Dokumentation für print

  • 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'

    – Mircea

    14. November 2019 um 18:17 Uhr

Benutzer-Avatar
Greg Hewgill

import sys

sys.stdout.write('h')
sys.stdout.flush()

sys.stdout.write('m')
sys.stdout.flush()

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]))

    – Rhabarber

    3. Oktober 2017 um 9:28 Uhr


Oder verwenden Sie eine +dh:

>>> print 'me'+'no'+'likee'+'spacees'+'pls'
menolikeespaceespls

Stellen Sie einfach sicher, dass alle Objekte verkettet werden können.

Python 2.5.2 (r252:60911, Sep 27 2008, 07:03:14)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print "hello",; print "there"
hello there
>>> print "hello",; sys.stdout.softspace=False; print "there"
hellothere

Aber wirklich, Sie sollten verwenden sys.stdout.write direkt.

Benutzer-Avatar
Brian

Der Vollständigkeit halber besteht eine andere Möglichkeit darin, den Softspace-Wert nach dem Ausführen des Schreibvorgangs zu löschen.

import sys
print "hello",
sys.stdout.softspace=0
print "world",
print "!"

Drucke helloworld !

Die Verwendung von stdout.write() ist jedoch in den meisten Fällen wahrscheinlich bequemer.

Benutzer-Avatar
Abd

Das sieht vielleicht blöd aus, scheint aber am einfachsten zu sein:

    print 'h',
    print '\bm'

  • Dies fügt immer noch einen Zeilenumbruch hinzu.

    – AL

    25. März 2015 um 12:26 Uhr

1055680cookie-checkWie verhindere ich, dass Python print Zeilenumbrüche oder Leerzeichen hinzufügt? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy