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?
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
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,
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
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)