
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.