Concatenare e unire stringhe in Python: Operatori +, funzioni di unione, ecc.

Attività commerciale

La seguente è una descrizione di come concatenare e unire stringhe str in Python.

  • Concatenare e unire più stringhe: +,+=operatore
  • Concatenare e combinare numeri e stringhe: +,+=operatore,str(),format(),f-stringa
  • Concatenare e combinare liste (array) di stringhe in una singola stringa:join()
  • Concatenare e combinare liste (array) di numeri in una singola stringa:join(),str()

Concatenare e unire più stringhe: +, +=operatore

collegamento: +operatore

L'operatore ++ può essere usato per concatenare i seguenti letterali e variabili di stringa

  • '…'
  • “…”
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

collegamento: +=operatore

Si può anche usare l'operatore +=, un operatore di assegnazione cumulativa. La variabile stringa sul lato sinistro viene concatenata con la stringa sul lato destro, e viene assegnata e aggiornata.

s1 += s2
print(s1)
# aaabbb

Se volete aggiungere una stringa alla fine di una variabile stringa, elaborate semplicemente la variabile stringa e qualsiasi letterale di stringa (o un'altra variabile stringa) con l'operatore +=.

s = 'aaa'

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

Concatenazione consecutiva di letterali di stringa

Se scrivete semplicemente dei letterali di stringa uno accanto all'altro, i letterali di stringa saranno concatenati.

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

È accettabile avere uno spazio tra due righe o un'interruzione di riga con backslash (considerata una continuazione).

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

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

C'è una tecnica per usare questo per scrivere lunghe stringhe su più linee nel codice.

Questo metodo di scrittura non è possibile per le variabili stringa.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Concatenamento numerico e di stringhe: +,+=operatore,str(),format(),f-stringa

Un'operazione + di tipo diverso comporta un errore.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Se volete concatenare un valore numerico (ad esempio, il tipo intero int o il tipo a virgola mobile float) con una stringa, convertite il valore numerico in un tipo di stringa con str() e poi concatenatelo con l'operatore + (o +=).

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

Se volete convertire il formato di un numero, come il riempimento dello zero o i decimali, usate la funzione format() o il metodo stringa format().

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

Naturalmente, è anche possibile incorporare il valore di una variabile direttamente in una stringa senza formattazione. Questo è più semplice da scrivere che usare l'operatore +.

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

Vedi il seguente articolo per i dettagli su come specificare il formato.

A partire da Python 3.6, è stato introdotto anche un meccanismo chiamato f-string (f-string), che è ancora più semplice da scrivere 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

Concatenare e unire liste (array) di stringhe: join()

Il metodo stringa join() può essere usato per concatenare una lista di stringhe in una singola stringa.

Ecco come scriverlo.

'String to be inserted between'.join([List of strings to be concatenated])

Chiama il metodo join() con 'stringa da inserire tra' e passa [lista di stringhe da concatenare] come argomento.

Se viene usata una stringa vuota, [elenco di stringhe da concatenare] sarà semplicemente concatenato, se viene usata una virgola, le stringhe saranno separate da virgole, e se viene usato un carattere di newline, ogni elemento della stringa sarà newlined.

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

Anche se qui viene dato solo un esempio di una lista, anche altri oggetti iterabili come le tuple possono essere specificati come argomenti di join().

A differenza di join(), split() è usata per dividere una stringa delimitata da un delimitatore specifico e ottenerla come lista.

Concatenare e combinare liste (array) di numeri come stringhe: join(),str()

Si verifica un errore se l'argomento di join() è una lista i cui elementi non sono stringhe.

l = [0, 1, 2]

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

Per concatenare una lista di numeri in una singola stringa, applicate la funzione str() ad ogni elemento della notazione di comprensione della lista per convertire i numeri in una stringa, e poi uniteli con join().

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

Può anche essere scritto come un'espressione generatrice, che è una versione generatrice della comprensione delle liste. Le espressioni generatrici sono racchiuse tra parentesi, ma le parentesi possono essere omesse se l'espressione generatrice è l'unico argomento di una funzione o 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

Le espressioni del generatore hanno generalmente il vantaggio di usare meno memoria delle comprensioni di lista, ma non c'è un particolare vantaggio nell'usare le espressioni del generatore poiché join() converte i generatori in liste nella sua elaborazione interna. In effetti, è leggermente più veloce usare la comprensione delle liste fin dall'inizio.

Per maggiori informazioni sulla comprensione delle liste e sulle espressioni generatrici, vedere il seguente articolo.