xticks barplot python printing formatting python-2.x

barplot - ¿Cómo evito que Python imprima nuevas líneas o espacios?



pandas plot (16)

Esta pregunta ya tiene una respuesta aquí:

En pitón, si digo

print ''h''

Recibo la letra hy una nueva linea. Si yo digo

print ''h'',

Recibo la letra h y no hay nueva linea. Si yo digo

print ''h'', print ''m'',

Obtengo la letra h, un espacio, y la letra m. ¿Cómo puedo evitar que Python imprima el espacio?

Las declaraciones de impresión son iteraciones diferentes del mismo bucle, por lo que no puedo usar el operador +.


¡Recupera el control de tu consola! Simplemente:

from __past__ import printf

donde __past__.py contiene:

import sys def printf(fmt, *varargs): sys.stdout.write(fmt % varargs)

entonces:

>>> printf("Hello, world!/n") Hello, world! >>> printf("%d %d %d/n", 0, 1, 42) 0 1 42 >>> printf(''a''); printf(''b''); printf(''c''); printf(''/n'') abc >>>

Bonificación extra: si no te gusta print >> f, ... , puedes ampliar esta acción a fprintf (f, ...).


En Python 2.6:

>>> print ''h'',''m'',''h'' h m h >>> from __future__ import print_function >>> print(''h'',end='''') h>>> print(''h'',end='''');print(''m'',end='''');print(''h'',end='''') hmh>>> >>> print(''h'',''m'',''h'',sep=''''); hmh >>>

Por lo tanto, al utilizar print_function desde __future__ puede establecer explícitamente los parámetros sep y end de la función de impresión.


Esto puede parecer estúpido, pero parece ser el más simple:

print ''h'', print ''/bm''


Greg tiene razón: puedes usar sys.stdout.write

Quizás, sin embargo, deberías considerar refactorizar tu algoritmo para acumular una lista de <whatevers> y luego

lst = [''h'', ''m''] print "".join(lst)


No estoy agregando una nueva respuesta. Solo estoy poniendo la mejor respuesta marcada en un formato mejor. Puedo ver que la mejor respuesta por calificación es usar sys.stdout.write(someString) . Puedes probar esto:

import sys Print = sys.stdout.write Print("Hello") Print("World")

rendirá:

HelloWorld

Eso es todo.


O use a + , es decir:

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

Solo asegúrate de que todos sean objetos capaces de concatenar.


Para completar, otra forma es borrar el valor del espacio de software después de realizar la escritura.

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

imprime helloworld !

Sin embargo, el uso de stdout.write () es probablemente más conveniente para la mayoría de los casos.


Puedes usar imprimir como la función printf en C.

p.ej

imprimir "% s% s"% (x, y)


Puedes usar:

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


Solo un comentario. En Python 3 , usarás

print(''h'', end='''')

para suprimir el terminador de la línea final, y

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

para suprimir el separador de espacios en blanco entre los elementos.


Tuve el mismo problema una vez que quise leer algunos dígitos de un archivo. Lo resolví así:

f = open(''file.txt'', ''r'') for line in f: print(str.split(line)[0])


sys.stdout.write es (en Python 2) la única solución robusta. La impresión de Python 2 es una locura. Considere este código:

print "a", print "b",

Esto imprimirá ab , lo que lo llevará a sospechar que está imprimiendo un espacio al final. Pero esto no es correcto. Intenta esto en su lugar:

print "a", sys.stdout.write("0") print "b",

Esto imprimirá a0b . ¿Cómo explicas eso? ¿Dónde han ido los espacios?

Todavía no puedo entender lo que realmente está pasando aquí. ¿Podría alguien mirar por encima de mi mejor conjetura?

Mi intento de deducir las reglas cuando tienes un rastro , en tu print :

Primero, supongamos que print , (en Python 2) no imprime ningún espacio en blanco (espacios ni nuevas líneas).

Sin embargo, Python 2 presta atención a cómo está imprimiendo. ¿Está utilizando print , o sys.stdout.write , o algo más? Si realiza dos llamadas consecutivas para print , Python insistirá en colocar un espacio entre los dos.


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

Pero realmente, deberías usar sys.stdout.write directamente.


import sys a=raw_input() for i in range(0,len(a)): sys.stdout.write(a[i])


print("{0}{1}{2}".format(a, b, c))


print(''''''first line / second line'''''')

producirá

primera linea segunda linea