HOWTO · Python

Stampa valori senza spazi in mezzo in Python

Scopri come stampare valori senza spazi tra loro in Python: usa il parametro sep di print(), le f-string, str.format(), la formattazione con %, la concatenazione e la sostituzione Template delle stringhe.

In questa pagina

Quando passi più argomenti alla funzione print() separati da virgole, print() li unisce con uno spazio per impostazione predefinita, il che a volte porta a spazi inutili tra i valori. Fortunatamente, Python offre diverse alternative che ti aiutano a controllare questa spaziatura con esattezza.

In questa guida imparerai i diversi metodi per stampare senza spazi tra i valori in Python. Ogni metodo è mostrato sullo stesso esempio continuo, che parte dalla forma con virgole seguente:

x = 10
print('The number of mangoes I have is "', x, '"')

Produzione:

The number of mangoes I have is " 10 "

Nota gli spazi inutili tra il numero 10 e le virgolette doppie che lo circondano: uno proviene da ciascuna virgola. L’obiettivo di ogni metodo seguente è rimuovere questa spaziatura eccessiva stampando gli stessi valori.

Usa la formattazione delle stringhe con il segno modulo % per stampare valori senza spazi in mezzo in Python

Il segno %, noto anche come operatore di formattazione delle stringhe o di interpolazione, è il metodo di formattazione più antico in Python. Un segnaposto come %d all’interno della stringa marca dove va un valore, e il valore dopo l’operatore % lo sostituisce, così nessun separatore viene aggiunto in nessun punto:

x = 10
print('The number of mangoes I have is "%d"' % x)

Produzione:

The number of mangoes I have is "10"

Qui, %d è il segnaposto per un intero. Quando la stringa viene costruita, viene sostituito dal valore di x, che è 10, e il testo stampato tocca direttamente le virgolette. Questo stile funziona ancora in Python 3, ma il codice più nuovo di solito preferisce str.format() o le f-string.

Usa la formattazione delle stringhe con la funzione str.format() per stampare valori senza spazi in mezzo in Python

Con str.format(), le parentesi graffe {} all’interno della stringa marcano i punti in cui i valori vengono sostituiti. Il metodo è stato introdotto in Python 3 e gestisce la formattazione complessa in modo efficiente; poiché la stringa finita è un unico argomento per print(), non appare alcun separatore:

x = 10
print('The number of mangoes I have is "{}"'.format(x))

Produzione:

The number of mangoes I have is "10"

Il segnaposto {} si trova all’interno delle virgolette doppie e viene sostituito dal valore di x quando la stringa viene mostrata. Per il codice nuovo, str.format() è consigliato rispetto al vecchio operatore %.

Usa la concatenazione di stringhe per stampare valori senza spazi in mezzo in Python

L’operatore +, l’operatore di concatenazione di stringhe, unisce le stringhe da un’estremità all’altra e non aggiunge nulla tra loro, il che lo rende un’alternativa diretta alla separazione con virgole:

x = 10
print('The number of mangoes I have is "' + str(x) + '"')

Produzione:

The number of mangoes I have is "10"

La concatenazione funziona solo tra stringhe, quindi l’intero x viene prima convertito con str(). I pezzi formano poi una singola stringa — 'The number of mangoes I have is "', '10' e '"' — e print() la stampa così com’è.

Usa la f-string per la formattazione delle stringhe per stampare valori senza spazi in mezzo in Python

Python 3.6 ha introdotto le f-string, che incorporano espressioni direttamente dentro un letterale di stringa. Sono anche più veloci degli altri due metodi di formattazione sopra, perché i valori vengono valutati mentre la stringa viene costruita:

x = 10
print(f'The number of mangoes I have is "{x}"')

Produzione:

The number of mangoes I have is "10"

Il prefisso f prima della stringa la trasforma in una f-string, e {x} al suo interno viene sostituito dal valore di x quando il codice viene eseguito. Poiché la variabile si trova esattamente dove deve apparire il suo testo, il risultato è conciso, leggibile e privo di spazi extra.

Usa il parametro sep dell’istruzione print per stampare valori senza spazi in mezzo in Python

Se vuoi mantenere gli argomenti separati da virgole, cambia ciò che print() mette tra loro. Il parametro sep, disponibile in Python 3, è il separatore inserito tra gli argomenti; per impostazione predefinita è un singolo spazio:

x = 10
print('The number of mangoes I have is "', x, '"', sep="")

Produzione:

The number of mangoes I have is "10"

Impostare sep sulla stringa vuota "" dice a print() di unire le parti — il testo fino alla virgoletta di apertura, il valore di x e la virgoletta di chiusura — senza nulla in mezzo. Questa è la modifica più piccola alla forma originale con virgole: gli argomenti restano gli stessi e viene rimosso solo il separatore.

Interpolazione di stringhe usando stringhe Template per stampare valori senza spazi in mezzo in Python

La classe string.Template di Python interpola valori in una stringa modello: i segnaposto che iniziano con $ vengono sostituiti con i valori che fornisci tu, e intorno a essi non viene aggiunto nulla:

from string import Template

x = 10
template = Template('The number of mangoes I have is "$x"')
result = template.substitute(x=x)
print(result)

Produzione:

The number of mangoes I have is "10"

Qui, $x è il segnaposto per il valore di x. Chiamare template.substitute(x=x) lo sostituisce con 10, e print(result) stampa la stringa finita esattamente — The number of mangoes I have is "10", senza virgolette o spazi aggiunti. Le stringhe Template sono usate più spesso quando il modello stesso proviene da un utente o da un file, perché le loro regole di sostituzione sono deliberatamente semplici.

Conclusione

Gli spazi nell’esempio originale provengono dallo stesso print(): con argomenti separati da virgole, inserisce il separatore sep, che per impostazione predefinita è uno spazio. Puoi rimuoverli cambiando il separatore (sep=""), costruendo l’intera stringa prima di stampare (con una f-string, str.format(), l’operatore %, la concatenazione o un string.Template), o combinando entrambe le idee. Per il codice quotidiano la f-string è l’opzione più leggibile, mentre sep="" è la correzione più rapida quando gli argomenti sono già al loro posto.