2015-02-23 11 views

risposta

30

Non utilizzare print ..., se non si desiderano spazi. Usa concatenazione di stringhe o formattazione.

concatenazione:

print 'Value is "' + str(value) + '"' 

formattazione:

print 'Value is "{}"'.format(value) 

Quest'ultimo è molto più flessibile, vedere la str.format() method documentation e Formatting String Syntax section.

Potrai anche venire attraverso il più vecchio % formatting style:

print 'Value is "%d"' % value 
print 'Value is "%d", but math.pi is %.2f' % (value, math.pi) 

ma questo non è flessibile come il metodo più recente str.format().

+1

Oh bene, non lo sapevo, solo l'apprendimento Python, grazie per la risposta rapida! – nookonee

+0

'' '' .format' è preferibile perché evita diversi casi di edge relativi allo stile '%' come la promozione implicita a 'unicode' e l'uso non intenzionale'% tuple', '% dict'. – jfs

+0

@ J.F.Sebastian: per non parlare del fatto che 'str.format()' supporta la formattazione personalizzata per le classi; non è possibile formattare facilmente oggetti 'datetime' con'% ', ad esempio con' str.format() ', ad esempio. Poi ci sono le definizioni dei campi ricorsivi (puoi usare i campi per determinare come sono formattati altri campi), ecc. –

2

È la virgola che fornisce lo spazio bianco extra.

Un modo è quello di utilizzare il metodo di stringa %:

print 'Value is "%d"' % (value) 

che è come printf in C, che consente di incorporare e formattare gli articoli dopo % utilizzando identificatori di formato nella stringa stessa. Un altro esempio, che mostra l'utilizzo di più valori:

print '%s is %3d.%d' % ('pi', 3, 14159) 

Per quel che vale, Python 3 migliora notevolmente la situazione, consentendo di specificare il separatore e il terminatore per una singola print chiamata:

>>> print(1,2,3,4,5) 
1 2 3 4 5 

>>> print(1,2,3,4,5,end='<<\n') 
1 2 3 4 5<< 

>>> print(1,2,3,4,5,sep=':',end='<<\n') 
1:2:3:4:5<< 
+0

l'interpolazione '%' è soggetta ad errori con 'tuple's e altri comportamenti particolari. –

+0

Eppure, in qualche modo, sono riuscito a ricostruire il codice e farlo funzionare la prima volta. Sì, devi conoscere le carenze degli strumenti che usi. Questo è vero in ogni campo. Non sono il tipo di sviluppatore che tende a passare tipi arbitrari alle mie operazioni di formattazione :-) – paxdiablo

+0

è per questo che il '.format' che funziona senza casi limite sul 99,999% delle installazioni Python che un nuovo utente può incontrare, è la più amichevole newbie- –

-1
>>> value=42 

>>> print "Value is %s"%('"'+str(value)+'"') 

Value is "42" 
+0

Non c'è bisogno di avere la concatenazione in più solo per ottenere i caratteri '" ' –

+0

Utente' repr' o, in questo caso '% r' –

1

Per ricostruire quello che stava dicendo Martjin. Io userei l'interpolazione/formattazione delle stringhe.

In Python 2.x, che sembra essere quello che si sta utilizzando per la mancanza di parentesi intorno alla funzione di stampa si fa:

print 'Value is "%d"' % value 

In Python 3.x devi usare il metodo format invece, quindi il codice sarebbe simile a questo.

message = 'Value is "{}"' 
print(message.format(value)) 
8

Basta una risposta facile per il futuro che ho trovato facile da usare come antipasto: Simile a utilizzare end='' per evitare una nuova linea, è possibile utilizzare sep='' di evitare gli spazi bianchi ... per questa domanda qui, sarebbe simile a questo: print('Value is "', value, '"', sep = '')

Possa aiutare qualcuno in futuro.

+0

Grazie! Questo mi ha aiutato con un problema che mi dava fastidio da secoli – Puffycheeses

+0

Questo è python 3 sintassi specifica. –

1

https://docs.python.org/2/library/functions.html#print

di stampa (* oggetti, settembre ='', fine = '\ n', file = sys.stdout)

Nota: Questa funzione non è normalmente disponibile come un built-in dal la stampa del nome è riconosciuta come dichiarazione di stampa. Per disabilitare la dichiarazione e utilizzare la funzione di stampa(), utilizzare questo futuro affermazione nella parte superiore del modulo:

da futuro importazione print_function

Problemi correlati