Concatenarea și îmbinarea șirurilor de caractere în Python: Operatori +, funcții de îmbinare etc.

Afaceri

Următoarea este o descriere a modului de concatenare și îmbinare a șirurilor de caractere str. în Python.

  • Concatenarea și fuzionarea mai multor șiruri de caractere: +,+=operator
  • Concatenarea și combinarea numerelor și șirurilor de caractere: +,+=operator,str(),format(),f-string
  • Concatenarea și combinarea listelor (array-uri) de șiruri de caractere într-un singur șir de caractere:join()
  • Concatenarea și combinarea listelor (array-uri) de numere într-un singur șir de caractere:join(),str()

Concatenarea și fuzionarea mai multor șiruri de caractere: +, +=operator

conexiune: +operator

Operatorul ++ poate fi utilizat pentru a concatena următoarele literale de șir de caractere și variabile de șir de caractere

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

conexiune: +=operator

Se poate utiliza, de asemenea, operatorul +=, un operator de atribuire cumulativă. Variabila șir de caractere din partea stângă este concatenată cu șirul de caractere din partea dreaptă și este atribuită și actualizată.

s1 += s2
print(s1)
# aaabbb

Dacă doriți să adăugați un șir de caractere la sfârșitul unei variabile de șir de caractere, procesați pur și simplu variabila de șir de caractere și orice literal de șir de caractere (sau o altă variabilă de șir de caractere) cu ajutorul operatorului +=.

s = 'aaa'

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

Concatenarea consecutivă a șirurilor literale

Dacă scrieți pur și simplu literali de șir de caractere unul lângă altul, aceștia vor fi concatenați.

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

Este acceptabil să existe un spațiu între două linii sau o pauză de linie backslash (considerată o continuare).

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

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

Există o tehnică de utilizare a acestei tehnici pentru a scrie șiruri lungi pe mai multe linii de cod.

Această metodă de scriere nu este posibilă pentru variabilele de tip șir de caractere.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Concatenarea numerelor și a șirurilor de caractere\concatenare: +,+=operator,str(),format(),f-string

O operațiune + de un tip diferit duce la o eroare.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Dacă doriți să concatenați o valoare numerică (de exemplu, un întreg de tip int sau o virgulă mobilă de tip float) cu un șir de caractere, convertiți valoarea numerică într-un tip de șir de caractere cu str() și apoi concatenați-le cu ajutorul operatorului + (sau al operatorului +=).

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

Dacă doriți să convertiți formatul unui număr, cum ar fi completarea cu zero sau zecimale, utilizați funcția format() sau metoda format() a șirurilor de caractere.

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

Bineînțeles, este posibilă și încorporarea valorii unei variabile direct într-un șir de caractere fără formatare. Acest lucru este mai simplu de scris decât utilizarea operatorului +.

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

Consultați următorul articol pentru detalii despre cum să specificați formatul.

Începând cu Python 3.6, a fost introdus și un mecanism numit f-strings (f-string), care este chiar mai simplu de scris decât 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

Concatenarea și îmbinarea listelor (array-uri) de șiruri de caractere: join()

Metoda join() poate fi utilizată pentru a concatena o listă de șiruri de caractere într-un singur șir.

Iată cum se scrie.

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

Se apelează metoda join() cu „string to insert between” și se trece [lista de șiruri de concatenat] ca argument.

Dacă se utilizează un șir gol, [lista de șiruri de concatenat] va fi pur și simplu concatenat, dacă se utilizează o virgulă, șirurile vor fi separate prin virgulă, iar dacă se utilizează un caracter de nou-linie, fiecare element de șir va fi nou-linie.

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

Deși aici este dat doar un exemplu de listă, alte obiecte iterabile, cum ar fi tulele, pot fi specificate ca argumente pentru join().

Spre deosebire de join(), split() este utilizat pentru a diviza un șir delimitat de un anumit delimitator și pentru a-l obține sub formă de listă.

Concatenarea și combinarea listelor (array-uri) de numere ca șiruri de caractere: join(),str()

Apare o eroare dacă argumentul pentru join() este o listă ale cărei elemente nu sunt șiruri de caractere.

l = [0, 1, 2]

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

Pentru a concatena o listă de numere într-un singur șir de caractere, aplicați funcția str() la fiecare element din notarea de înțelegere a listei pentru a converti numerele într-un șir de caractere, apoi uniți-le cu join().

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

De asemenea, poate fi scrisă ca o expresie generatoare, care este o versiune generatoare a înțelegerilor de liste. Expresiile generatoare sunt incluse în paranteze, dar parantezele pot fi omise dacă expresia generatoare este singurul argument al unei funcții sau metode.

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

Expresiile generatoare au, în general, avantajul de a utiliza mai puțină memorie decât înțelegerile de liste, dar nu există niciun avantaj special în utilizarea expresiilor generatoare, deoarece join() convertește generatoarele în liste în procesarea sa internă. De fapt, este puțin mai rapid să se utilizeze de la început comprehensiunile de listă.

Pentru mai multe informații despre înțelegerile de liste și expresiile generatoare, consultați următorul articol.