Concatenació i unió de cadenes en Python: operadors +, funcions d’unió, etc.

Negocis

A continuació es mostra una descripció de com concatenar i unir string string a Python.

  • Concatenació i fusió de diverses cadenes:+,+=operador
  • Concatenar i combinar nombres i cadenes:+,+=operador,str(),format(),corda f
  • Concatenar i combinar llistes (matrius) de cadenes en una sola cadena:join()
  • Concatenar i combinar llistes (matrius) de nombres en una sola cadena:join(),str()

Concatenació i fusió de diverses cadenes:+,+=operador

connexió:+operador

L’operador ++ es pot utilitzar per concatenar els següents literals de cadena i variables de cadena

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

connexió:+=operador

També es pot utilitzar l’operador +=, un operador d’assignació acumulada. La variable de cadena del costat esquerre es concatena amb la cadena del costat dret i s’assigna i s’actualitza.

s1 += s2
print(s1)
# aaabbb

Si voleu afegir una cadena al final d’una variable de cadena, simplement processeu la variable de cadena i qualsevol literal de cadena (o una altra variable de cadena) amb l’operador +=.

s = 'aaa'

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

Concatenació consecutiva de literals de cadena

Si simplement escriviu literals de cadena un al costat de l’altre, els literals de cadena es concatenaran.

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

És acceptable tenir un espai entre dues línies o un salt de línia de barra invertida (considerat una continuació).

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

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

Hi ha una tècnica per utilitzar-la per escriure cadenes llargues en diverses línies del codi.

Aquest mètode d’escriptura no és possible per a variables de cadena.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Concatenació/concatenació numèrica i de cadenes:+,+=operador,str(),format(),corda f

Una operació + d’un tipus diferent dóna lloc a un error.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Si voleu concatenar un valor numèric (p. ex., tipus enter int o tipus de coma flotant float) amb una cadena, convertiu el valor numèric en un tipus de cadena amb str() i després concatenar-los amb l’operador + (o +=). ).

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

Si voleu convertir el format d’un nombre, com ara l’emplenament de zero o els decimals, utilitzeu la funció format() o el mètode de cadena 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

Per descomptat, també és possible incrustar el valor d’una variable directament en una cadena sense format. Això és més senzill d’escriure que utilitzar l’operador +.

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

Consulteu l’article següent per obtenir més informació sobre com especificar el format.

Des de Python 3.6, també s’ha introduït un mecanisme anomenat f-strings (f-string), que és encara més senzill d’escriure que 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

Concatenar i unir llistes (matrius) de cadenes:join()

El mètode de cadena join() es pot utilitzar per concatenar una llista de cadenes en una única cadena.

A continuació s’explica com escriure’l.

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

Truqueu al mètode join() amb “cadena per inserir entre” i passeu [llista de cadenes per concatenar] com a argument.

Si s’utilitza una cadena buida, [llista de cadenes que s’han de concatenar] simplement es concatenarà, si s’utilitza una coma, les cadenes estaran separades per comes, i si s’utilitza un caràcter de nova línia, cada element de cadena es posarà en una nova línia.

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

Tot i que aquí només es dóna un exemple de llista, també es poden especificar altres objectes iterables com ara tuples com a arguments per join().

A diferència de join(), split() s’utilitza per dividir una cadena delimitada per un delimitador específic i obtenir-la com una llista.

Concatenar i combinar llistes (matrius) de nombres com a cadenes:join(),str()

Es produeix un error si l’argument per join() és una llista els elements de la qual no són cadenes.

l = [0, 1, 2]

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

Per concatenar una llista de números en una cadena única, apliqueu la funció str() a cada element de la notació de comprensió de la llista per convertir els números en una cadena i, a continuació, uniu-los amb join().

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

També es pot escriure com una expressió generadora, que és una versió generadora de comprensió de llistes. Les expressions del generador estan tancades entre parèntesis, però els parèntesis es poden ometre si l’expressió del generador és l’únic argument d’una funció o mètode.

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

Les expressions generadores generalment tenen l’avantatge d’utilitzar menys memòria que les comprensió de llistes, però no hi ha cap avantatge particular en utilitzar expressions generadores ja que join() converteix els generadors en llistes en el seu processament intern. De fet, és una mica més ràpid utilitzar la comprensió de llistes des del principi.

Per obtenir més informació sobre la comprensió de llistes i les expressions generadores, consulteu l’article següent.

Copied title and URL