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.
- Artículos relacionados:Escribir cadenas largas en varias líneas en Python
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.
- Artículos relacionados:Conversión de formatos en Python, formato (llenado de 0, notación exponencial, hexadecimal, etc.)
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.
- Artículos relacionados:Cómo utilizar las comprensiones de listas de Python