Skip to content

Concatenare stringhe in Python (operatore +, join, ecc.)

Python

Questo articolo descrive come concatenare le stringhe in Python.

  • Concatena più stringhe:+, += operator
  • Concatena stringhe e numeri:+, += operator, str(), format(), f-string
  • Concatena un elenco di stringhe in una stringa:join()
  • Concatena un elenco di numeri in una stringa:join(), str()

Concatena più stringhe:+, += operator

+ operatore

Puoi concatenare stringhe letterali (‘…’ o “…”) e variabili stringa con l’operatore +.

s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc

s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'

s = s1 + s2 + s3
print(s)
# aaabbbccc

s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd

+= operatore

Puoi aggiungere un’altra stringa a una stringa con l’operatore sul posto, +=. La stringa a destra è concatenata dopo la variabile stringa a sinistra.

s1 += s2
print(s1)
# aaabbb

Se vuoi aggiungere una stringa alla fine di una variabile stringa, usa l’operatore +=.

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

Concatena scrivendo stringhe letterali consecutivamente

Se scrivi stringhe letterali consecutivamente, vengono concatenate.

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

Anche se ci sono più spazi o nuove righe con una barra rovesciata (considerate come linee di continuazione) tra le stringhe, vengono concatenate.

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'
    'bbb'
    'ccc'
print(s)
# aaabbbccc

Usando questo, puoi scrivere stringhe lunghe su più righe nel codice.

Non è possibile farlo per le variabili stringa.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Concatena stringhe e numeri:+, += operator, str(), format(), f-string

L’operazione + tra tipi diversi generi un errore.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

# s = s1 + i
# TypeError: must be str, not int

Se si desidera concatenare e un numero, ad esempio un intero int o un float a virgola mobile una stringa, il numero in una stringa con str() e quindi utilizzare l’operatore + o +=.

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

Utilizzare la funzione format() o il metodo string format() se si desidera applicare il formato numerico, ad esempio riempimento zero o posizioni decimali.

s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000

s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000

Ovviamente è anche possibile incorporare il valore di una variabile direttamente in una stringa senza specificare il formato, cosa più semplice rispetto all’utilizzo dell’operatore +.

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

In Python 3.6 e versioni successive, puoi anche usare una stringa letterale formattata (f-string). È anche più semplice di format().

s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000

s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25

Concatena un elenco di stringhe in una stringa:join()

Puoi concatenare un elenco di stringhe in una singola stringa con il metodo string, join().

Chiama il metodo join() da ‘Stringa da inserire’ e passa [Lista di stringhe].

'String to insert'.join([List of strings])

Se usi una stringa vuota ”, [Elenco di stringhe] viene semplicemente concatenata e se usi una virgola , crea una stringa delimitata da virgole. Se viene utilizzato un carattere di nuova riga n, verrà inserito una nuova riga per ogni stringa.

l = ['aaa', 'bbb', 'ccc']

s = ''.join(l)
print(s)
# aaabbbccc

s = ','.join(l)
print(s)
# aaa,bbb,ccc

s = '-'.join(l)
print(s)
# aaa-bbb-ccc

s = 'n'.join(l)
print(s)
# aaa
# bbb
# ccc

Nota che altri oggetti iterabili come le tuple possono essere specificati come argomenti di join().

Usa split() per dividere una stringa separata da un delimitatore specifico e ottenerla come un elenco. Vedere il seguente articolo per i dettagli.

Concatena un elenco di numeri in una stringa:join(), str()

Se si imposta un elenco non stringa su join(), viene generato un errore.

l = [0, 1, 2]

# s="-".join(l)
# TypeError: sequence item 0: expected str instance, int found

Se vuoi concatenare un elenco di numeri (int o float) in una singola stringa, applica la funzione str() a ogni elemento nella comprensione dell’elenco per i numeri in stringhe, quindi concatenali con join().

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

Può essere scritto come un’espressione generatore, una versione generatore di comprensioni di elenchi. Le espressioni del generatore sono racchiuse tra parentesi (), ma è possibile omettere () se l’espressione del generatore è l’unico argomento di una funzione o di un metodo.

s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2

s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2

In generale, le espressioni del generatore hanno il vantaggio di un utilizzo ridotto della memoria alle comprensioni degli elenchi. Tuttavia, poiché join() converte internamente un generatore in un elenco, non vi è alcun vantaggio nell’usare le espressioni del generatore.

Vedere l’articolo seguente per i dettagli sulla comprensione degli elenchi e sulle espressioni del generatore.