Cum pot suprima linia nouă după o instrucțiune de tipărire? (Programare, Python, Python 3.X)

Ci3 a intrebat.

Am citit că pentru a suprima linia nouă după o instrucțiune de tipărire se poate pune o virgulă după text. Exemplul de aici pare a fi Python 2. Cum se poate face în Python 3?

De exemplu:

for item in [1,2,3,4]:
    print(item, " ")

Ce trebuie să se schimbe pentru ca să le tipărească pe aceeași linie?

Comentarii

  • Ați putea face doar print(' '.join([str(i) for i in [1, 2, 3, 4]])) –  > Por anon58282847382.
  • print(*[1, 2, 3, 4]) funcționează pentru cazul obișnuit de imprimare a unei secvențe separate prin spațiu –  > Por John La Rooy.
  • Postare conexă – Cum să imprimați fără newline sau spațiu?. Răspunsul acceptat în acest topic acoperă toate versiunile Python. –  > Por RBT.
5 răspunsuri
Levon

Întrebarea întreabă: „Cum se poate face în Python 3?

Utilizați această construcție cu Python 3.x:

for item in [1,2,3,4]:
    print(item, " ", end="")

Aceasta va genera:

1  2  3  4

Vedeți acest lucru Documentul Python pentru mai multe informații:

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ")  # Appends a space instead of a newline

În afară de:

în plus, în print() oferă, de asemenea, funcția sep parametru care permite specificarea modului în care trebuie separate elementele individuale care urmează să fie tipărite. De ex,

In [21]: print('this','is', 'a', 'test')  # default single space between items
this is a test

In [22]: print('this','is', 'a', 'test', sep="") # no spaces between items
thisisatest

In [22]: print('this','is', 'a', 'test', sep="--*--") # user specified separation
this--*--is--*--a--*--test

Comentarii

  • Perfect! Deci end=””” înlocuiește pur și simplu caracterul newline. –  > Por Ci3.
  • @ChrisHarris Vezi actualizarea cu citatul din documentație, astfel încât să înlocuiești newline-ul cu "" (șirul gol) –  > Por Levon.
  • Peste tot unde mă uit toată lumea spune să fac end=”, dar eu primesc: SyntaxError: sintaxă invalidă –  > Por thang.
  • @thang Ce versiune de Python folosiți? Acest lucru funcționează pentru versiunea 3.x –  > Por Levon.
  • Pentru a fi mai specific, este from __future__ import print_function. –  > Por Scott Stafford.
Jasmohan

Cod pentru Python 3.6.1

print("This first text and " , end="")

print("second text will be on the same line")

print("Unlike this text which will be on a newline")

Ieșire

>>>
This first text and second text will be on the same line
Unlike this text which will be on a newline

Comentarii

  • Acest lucru a clarificat modul în care parametrul end=”” ar afecta următoarea linie, dar nu și pe cea de după – mulțumesc! –  > Por Paulo Raposo.
Miles F. Bintz II

print nu a trecut de la declarație la funcție până la Python 3.0. Dacă folosiți un Python mai vechi, atunci puteți suprima linia nouă cu o virgulă de sfârșit, astfel:

print "Foo %10s bar" % baz,

Comentarii

  • Întrebarea se referea în mod specific la utilizarea Python 3. –  > Por Josh Wright.
neil.millikin

Deoarece funcția print() din python 3 permite definiția end=”””, aceasta satisface majoritatea problemelor.

În cazul meu, am vrut să folosesc PrettyPrint și am fost frustrat de faptul că acest modul nu a fost actualizat în mod similar. Așa că l-am făcut să facă ceea ce am vrut:

from pprint import PrettyPrinter

class CommaEndingPrettyPrinter(PrettyPrinter):
    def pprint(self, object):
        self._format(object, self._stream, 0, 0, {}, 0)
        # this is where to tell it what you want instead of the default "
"
        self._stream.write(",
")

def comma_ending_prettyprint(object, stream=None, indent=1, width=80, depth=None):
    """Pretty-print a Python object to a stream [default is sys.stdout] with a comma at the end."""
    printer = CommaEndingPrettyPrinter(
        stream=stream, indent=indent, width=width, depth=depth)
    printer.pprint(object)

Acum, când fac:

comma_ending_prettyprint(row, stream=outfile)

Obțin ceea ce am vrut (înlocuiți ceea ce doriți — Your Mileage May Vary)

nw79

Există câteva informații despre tipărirea fără newline aici.

În Python 3.x putem folosi ‘end=’ în funcția print. Acest lucru îi spune să încheie șirul cu un caracter ales de noi, în loc să se termine cu o linie nouă. De exemplu:

print("My 1st String", end=","); print ("My 2nd String.")

Acest lucru are ca rezultat:

My 1st String, My 2nd String.