Concatenación y unión de cadenas en Python: Operadores +, funciones de unión, etc.

Negocio

A continuación se describe cómo concatenar y unir cadenas en Python.

  • Concatenar y fusionar varias cadenas: +,+=operador
  • Concatenar y combinar números y cadenas: +,+=operador,str(),format(),f-string
  • Concatenar y combinar listas (matrices) de cadenas en una sola cadena:join()
  • Concatenar y combinar listas (matrices) de números en una sola cadena:join(),str()

Concatenar y fusionar varias cadenas: +, +=operador

conexión: +operador

El operador ++ puede utilizarse para concatenar los siguientes literales y 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

conexión: +=operador

También se puede utilizar el operador +=, un operador de asignación acumulativo. La variable de cadena del lado izquierdo se concatena con la cadena del lado derecho, y se asigna y actualiza.

s1 += s2
print(s1)
# aaabbb

Si quieres añadir una cadena al final de una variable de cadena, simplemente procesa la variable de cadena y cualquier literal de cadena (u otra variable de cadena) con el operador +=.

s = 'aaa'

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

Concatenación consecutiva de literales de cadena

Si simplemente escribe literales de cadena uno al lado del otro, los literales de cadena se concatenarán.

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

Es aceptable que haya un espacio entre dos líneas o un salto de línea con barra invertida (considerado una continuación).

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

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

Hay una técnica para usar esto para escribir cadenas largas en múltiples líneas en el código.

Este método de escritura no es posible para las variables de cadena.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Concatenación numérica y de cadenas de texto: +,+=operador,str(),format(),f-string

Una operación + de otro tipo da lugar a un error.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Si desea concatenar un valor numérico (por ejemplo, de tipo entero int o de punto flotante float) con una cadena, convierta el valor numérico a un tipo de cadena con str() y luego concaténelos con el operador + (o el operador +=).

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

Si desea convertir el formato de un número, como el relleno de ceros o los decimales, utilice la función format() o el método 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

Por supuesto, también es posible incrustar el valor de una variable directamente en una cadena sin formatear. Esto es más sencillo de escribir que utilizar el operador +.

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

Consulte el siguiente artículo para saber cómo especificar el formato.

Desde Python 3.6, también se ha introducido un mecanismo llamado f-strings (f-cadena), que es incluso más sencillo de escribir 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 y unir listas (arrays) de cadenas: join()

El método de cadenas join() puede utilizarse para concatenar una lista de cadenas en una única cadena.

La siguiente es la forma de escribirlo.

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

Llama al método join() con 'cadena a insertar entre' y pasa [lista de cadenas a concatenar] como argumento.

Si se utiliza una cadena vacía, [lista de cadenas a concatenar] será simplemente concatenada, si se utiliza una coma, las cadenas serán separadas por comas, y si se utiliza un carácter de nueva línea, cada elemento de la cadena será nuevamente subrayado.

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

Aunque aquí sólo se da un ejemplo de una lista, también se pueden especificar otros objetos iterables, como las tuplas, como argumentos de join().

A diferencia de join(), split() se utiliza para dividir una cadena delimitada por un delimitador específico y obtenerla como una lista.

Concatenar y combinar listas (arrays) de números como cadenas: join(),str()

Se produce un error si el argumento de join() es una lista cuyos elementos no son cadenas.

l = [0, 1, 2]

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

Para concatenar una lista de números en una sola cadena, aplique la función str() a cada elemento de la notación de comprensión de la lista para convertir los números en una cadena, y luego únalos con join().

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

También puede escribirse como una expresión generadora, que es una versión generadora de las comprensiones de listas. Las expresiones generadoras se encierran entre paréntesis, pero los paréntesis pueden omitirse si la expresión generadora es el único argumento de una función o método.

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

Las expresiones generadoras tienen generalmente la ventaja de utilizar menos memoria que las comprensiones de listas, pero no hay ninguna ventaja particular en el uso de expresiones generadoras ya que join() convierte los generadores en listas en su procesamiento interno. De hecho, es ligeramente más rápido utilizar comprensiones de lista desde el principio.

Para obtener más información sobre las comprensiones de listas y las expresiones generadoras, consulte el siguiente artículo.

Copied title and URL