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.
- Articoli correlati:Scrivere lunghe stringhe su più righe in Python
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.
- Articoli correlati:Conversione di formato in Python, formato (riempimento 0, notazione esponenziale, esadecimale, ecc.)
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.
- Articoli correlati:Come usare la comprensione delle liste in Python