sola - salto de linea en una lista python
¿Cómo imprimir sin nueva línea o espacio? (26)
Forma general
import sys
sys.stdout.write(''.'')
También puede necesitar llamar
sys.stdout.flush()
para asegurar stdout
se vacía inmediatamente.
Python 2.6+
Desde Python 2.6 puede importar la función de print
desde Python 3:
from __future__ import print_function
Esto le permite utilizar la solución de Python 3 a continuación.
Python 3
En Python 3, la declaración de print
se ha cambiado en una función. En Python 3, puedes hacer lo siguiente:
print(''.'', end='''')
Esto también funciona en Python 2, siempre que haya usado from __future__ import print_function
.
Si tiene problemas con el almacenamiento en búfer, puede vaciar la salida agregando el argumento de palabra clave flush=True
:
print(''.'', end='''', flush=True)
Sin embargo, tenga en cuenta que la palabra clave flush
no está disponible en la versión de la función de print
importada desde __future__
en Python 2; solo funciona en Python 3, más específicamente 3.3 y posteriores. En versiones anteriores, todavía deberá vaciar manualmente con una llamada a sys.stdout.flush()
.
La pregunta está en el título.
Me gustaría hacerlo en python . Lo que me gustaría hacer en este ejemplo en c :
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Salida:
..........
En Python:
>>> for i in xrange(0,10): print ''.''
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print ''.'',
. . . . . . . . . .
En Python print
agregará un /n
o un espacio, ¿cómo puedo evitar eso? Ahora, es solo un ejemplo. No me digas que primero puedo construir una cadena y luego imprimirla. Me gustaría saber cómo "añadir" cadenas a la stdout
.
... no es necesario importar ninguna biblioteca. Solo usa el caracter de borrar:
BS=u''/0008'' # the unicode for "delete" character
for i in range(10):print(BS+"."),
esto elimina la nueva línea y el espacio (^ _ ^) *
@lenooh satisfizo mi consulta. Descubrí este artículo mientras buscaba ''Python Suprimir nueva línea''. Estoy usando IDLE3 en Raspberry Pi para desarrollar Python 3.2 para PuTTY. Quería crear una barra de progreso en la línea de comandos de PuTTY. No quería que la página se desplazara. Quería una línea horizontal para volver a asegurarle al usuario que se había asustado porque el programa no se ha detenido ni ha sido enviado a almorzar en un bucle infinito y alegre, como un ruego para que me deje en paz, lo estoy haciendo bien. pero esto puede llevar algo de tiempo. Mensaje interactivo - como una barra de progreso en el texto.
La print(''Skimming for'', search_string, ''/b! .001'', end='''')
inicializa el mensaje preparándose para la siguiente escritura de pantalla, que imprimirá tres espacios en blanco como ⌫⌫⌫ rubout y luego un período, borrando ''001'' y extendiendo la línea de puntos. Después de la entrada del usuario de search_string
loros, la /b!
recorta el signo de exclamación del texto de mi search_string
búsqueda para retroceder sobre el espacio que print()
contrario fuerza, colocando correctamente la puntuación. A eso le sigue un espacio y el primer ''punto'' de la ''barra de progreso'' que estoy simulando. De manera innecesaria, el mensaje también se ceba con el número de página (formateado a una longitud de tres con ceros a la izquierda) para advertir al usuario que se está procesando el progreso y que también reflejará el recuento de los períodos que más adelante desarrollaremos. Correcto.
import sys
page=1
search_string=input(''Search for?'',)
print(''Skimming for'', search_string, ''/b! .001'', end='''')
sys.stdout.flush() # the print function with an end='''' won''t print unless forced
while page:
# some stuff…
# search, scrub, and build bulk output list[], count items,
# set done flag True
page=page+1 #done flag set in ''some_stuff''
sys.stdout.write(''/b/b/b.''+format(page, ''03'')) #<-- here''s the progress bar meat
sys.stdout.flush()
if done: #( flag alternative to break, exit or quit)
print(''/nSorting'', item_count, ''items'')
page=0 # exits the ''while page'' loop
list.sort()
for item_count in range(0, items)
print(list[item_count])
#print footers here
if not (len(list)==items):
print(''#error_handler'')
La barra de progreso está en la línea sys.stdout.write(''/b/b/b.''+format(page, ''03''))
. Primero, para borrar a la izquierda, hace una copia de seguridad del cursor sobre los tres caracteres numéricos con ''/ b / b / b'' como ⌫⌫⌫ borrar y deja caer un nuevo período para agregar a la longitud de la barra de progreso. Luego escribe tres dígitos de la página a la que ha progresado hasta ahora. Debido a que sys.stdout.write()
espera a que se cierre un búfer completo o al canal de salida, sys.stdout.flush()
fuerza la escritura inmediata. sys.stdout.flush()
está integrado en el final de la print()
que se omite con la print(txt, end='''' )
. Luego, el código recorre sus operaciones mundanas e intensivas, mientras que no imprime nada más hasta que vuelve aquí para borrar tres dígitos, agregar un punto y escribir tres dígitos nuevamente, incrementado.
Los tres dígitos borrados y reescritos no son en absoluto necesarios, es solo una floritura que ejemplifica sys.stdout.write()
en lugar de print()
. Podrías cebar fácilmente con un punto y olvidar los tres backspaces de barra invertida (b, por supuesto, no escribir los recuentos de páginas con formato) imprimiendo la barra del período más de una vez cada vez, sin espacios ni nuevas líneas usando solo sys.stdout.write(''.''); sys.stdout.flush()
par sys.stdout.write(''.''); sys.stdout.flush()
Tenga en cuenta que la cáscara de la Raspberry Pi IDLE3 Python no respeta el retroceso como ⌫ borrar, sino que imprime un espacio, creando una lista aparente de fracciones.
- (o = 8> wiz
Aquí hay una forma general de imprimir sin insertar una nueva línea.
Python 3
for i in range(10):
print(''.'',end = '''')
En Python 3 es muy simple de implementar.
Debería ser tan simple como lo describe Guido Van Rossum en este enlace:
Re: ¿Cómo se imprime uno sin ac / r?
http://legacy.python.org/search/hypermail/python-1992/0115.html
¿Es posible imprimir algo pero no tener automáticamente adjunto un retorno de carro?
Sí, agregue una coma después del último argumento para imprimir. Por ejemplo, este bucle imprime los números 0..9 en una línea separada por espacios. Note la "impresión" sin parámetros que agrega la nueva línea final:
>>> for i in range(10):
... print i,
... else:
... print
...
0 1 2 3 4 5 6 7 8 9
>>>
En Python 3, la impresión es una función. Cuando usted llama
print (''hello world'')
Python lo traduce a
print (''hello world'', end = ''/n'')
Puedes cambiar el final a lo que quieras.
print (''hello world'', end = '''')
print (''hello world'', end = '' '')
Esta no es la respuesta a la pregunta en el título, pero es la respuesta sobre cómo imprimir en la misma línea:
import sys
for i in xrange(0,10):
sys.stdout.write(".")
sys.stdout.flush()
Hay dos formas generales de hacer esto:
Imprimir sin nueva línea en Python 3.x
No agregue nada después de la declaración de impresión y elimine ''/ n'' usando end=''''
como:
>>> print(''hello'')
hello # appending ''/n'' automatically
>>> print(''world'')
world # with previous ''/n'' world comes down
# solution is:
>>> print(''hello'', end='''');print('' world''); # end with anything like end=''-'' but not ''/n''
hello world # it seem correct output
Otro ejemplo en Loop :
for i in range(1,10):
print(i, end=''.'')
Imprimir sin nueva línea en Python 2.x
Al agregar una coma al final de la impresión, ignore ''/ n''.
>>> print "hello",; print" world"
hello world
Otro ejemplo en Loop :
for i in range(1,10):
print "{} .".format(i),
Espero que esto te ayudará. Puedes visitar este link .
La nueva función de print
(a partir de Python 3.0) tiene un parámetro end
opcional que le permite modificar el carácter final. También hay sep
para separador.
Muchas de estas respuestas parecen un poco complicadas. En Python 3.X simplemente haces esto,
print(<expr>, <expr>, ..., <expr>, end=" ")
El valor predeterminado de final es "/ n". Simplemente lo estamos cambiando a un espacio o también puede usar end = "".
Notarás que todas las respuestas anteriores son correctas. Pero quería hacer un atajo para escribir siempre el parámetro "end = ''''" al final.
Podrías definir una función como
def Print(*args,sep='''',end='''',file=None,flush=False):
print(*args,sep=sep,end=end,file=file,flush=flush)
Aceptaría toda la cantidad de parámetros. Incluso aceptará todos los demás parámetros como archivo, descarga, etc. y con el mismo nombre.
O tener una función como:
def Print(s):
return sys.stdout.write(str(s))
Entonces ahora:
for i in range(10): # or `xrange` for python 2 version
Print(i)
Salidas:
0123456789
Puedes hacer lo mismo en python3 de la siguiente manera:
#!usr/bin/python
i = 0
while i<10 :
print(''.'',end='''')
i = i+1
y ejecútelo con python filename.py
o python3 filename.py
Puedes hacerlo con argumento end
de print
. En Python3, range()
devuelve iterador y xrange()
no existe.
for i in range(10): print(''.'', end='''')
Puedes probar:
import sys
import time
# Keeps the initial message in buffer.
sys.stdout.write("/rfoobar bar black sheep")
sys.stdout.flush()
# Wait 2 seconds
time.sleep(2)
# Replace the message with a new one.
sys.stdout.write("/r"+''hahahahaaa '')
sys.stdout.flush()
# Finalize the new message by printing a return carriage.
sys.stdout.write(''/n'')
Solo puede agregar ,
al final de print
función de print
, para que no se imprima en una nueva línea.
Usando functools.partial para crear una nueva función llamada printf
>>> import functools
>>> printf = functools.partial(print, end="")
>>> printf("Hello world/n")
Hello world
Una forma sencilla de envolver una función con parámetros predeterminados.
Use la función de impresión de estilo python3 para python2.6 + (también romperá cualquier declaración de impresión con palabras clave existente en el mismo archivo).
# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
print(''.'', end='''')
Para no arruinar todas sus palabras clave de impresión en python2, cree un archivo printf.py
separado
# printf.py
from __future__ import print_function
def printf(str, *args):
print(str % args, end='''')
Entonces, utilízalo en tu archivo.
from printf import printf
for x in xrange(10):
printf(''.'')
print ''done''
#..........done
Más ejemplos que muestran el estilo de printf
printf(''hello %s'', ''world'')
printf(''%i %f'', 10, 3.14)
#hello world10 3.140000
desea imprimir algo en el bucle derecho, pero no desea que se imprima en una línea nueva cada vez ... por ejemplo:
for i in range (0,5):
print "hi"
OUTPUT:
hi
hi
hi
hi
hi
pero quieres que se imprima así: hola hola hola hola ¿verdad ???? sólo tiene que añadir una coma después de imprimir "hola"
Ejemplo:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
python 2.6+ :
from __future__ import print_function # needs to be first statement in file
print(''.'', end='''')
pitón 3 :
print(''.'', end='''')
pitón <= 2.5 :
import sys
sys.stdout.write(''.'')
si el espacio adicional es correcto después de cada impresión, en python 2
print ''.'',
engañosa en python 2 - evita :
print(''.''), # avoid this if you want to remain sane
# this makes it look like print is a function but it is not
# this is the `,` creating a tuple and the parentheses enclose an expression
# to see the problem, try:
print(''.'', ''x''), # this will print `(''.'', ''x'') `
recientemente tuve el mismo problema..
Lo resolví haciendo:
import sys, os
# reopen stdout with "newline=None".
# in this mode,
# input: accepts any newline character, outputs as ''/n''
# output: ''/n'' converts to os.linesep
sys.stdout = os.fdopen(sys.stdout.fileno(), "w", newline=None)
for i in range(1,10):
print(i)
esto funciona tanto en unix como en windows ... no lo he probado en macosx ...
hth
print
función de print
en python genera automáticamente una nueva línea. Tu podrías intentar:
print("Hello World", end="")
Nota: el título de esta pregunta solía ser algo así como "¿Cómo imprimir en python?"
Como la gente puede venir aquí a buscarlo en función del título, Python también admite la sustitución al estilo de printf:
>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
... print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three
Y puedes multiplicar fácilmente los valores de cadena:
>>> print "." * 10
..........
Código para Python 3.6.1
for i in range(0,10): print(''.'' , end="")
Salida
..........
>>>
for i in xrange(0,10): print ''.'',
Esto funcionará para usted. Aquí la coma (,) es importante después de imprimir. Obtuve ayuda de: http://freecodeszone.blogspot.in/2016/11/how-to-print-in-python-without-newline.html
for i in xrange(0,10): print ''/b.'',
Esto funcionó tanto en 2.7.8 como en 2.5.2 (Canopy y OSX terminal, respectivamente); no se requieren importaciones de módulos ni viajes en el tiempo.