web-dev-qa-db-fra.com

Comment puis-je supprimer la nouvelle ligne après une déclaration d'impression?

J'ai lu que pour supprimer la nouvelle ligne après une instruction print, vous pouvez mettre une virgule après le texte. L'exemple ici ressemble à Python 2. Comment cela peut-il être fait dans Python 3?

Par exemple:

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

Que faut-il changer pour qu'il les imprime sur la même ligne?

50
Ci3

La question demande: "Comment peut-on le faire en Python 3?"

Utilisez cette construction avec Python 3.x:

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

Cela va générer:

1  2  3  4

Voir ceci Python doc pour plus d'informations:

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

-

De côté:

de plus, la fonction print() offre également le paramètre sep qui permet de spécifier comment les éléments à imprimer doivent être séparés. Par exemple.,

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
89
Levon

print n'est pas passé d'une instruction à une autre jusqu'à Python 3.0. Si vous utilisez une version plus ancienne de Python, vous pouvez supprimer la nouvelle ligne avec une virgule, comme suit:

print "Foo %10s bar" % baz,
4
Miles F. Bintz II

Code pour 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")

Sortie

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

Etant donné que la fonction print () de python 3 autorise une définition de end = "", cela répond à la majorité des problèmes. 

Dans mon cas, je voulais PrettyPrint et j'étais frustré que ce module ne soit pas mis à jour de la même manière. Alors je l'ai fait faire ce que je voulais:

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 "\n"
        self._stream.write(",\n")

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)

Maintenant, quand je fais:

comma_ending_prettyprint(row, stream=outfile)

Je reçois ce que je voulais (remplace ce que tu veux - ton kilométrage peut varier)

0
neil.millikin