alvas
¿Cómo concateno una lista de cadenas en una sola cadena?
Por ejemplo, dado ['this', 'is', 'a', 'sentence']
como lo consigo "this-is-a-sentence"
?
Para manejar algunas cuerdas en variables separadasconsulte ¿Cómo agrego una cadena a otra en Python?.
Para el proceso opuesto, crear una lista a partir de una cadena, consulte ¿Cómo divido una cadena en una lista de caracteres? o ¿Cómo divido una cadena en una lista de palabras? según sea apropiado.
burhan khalid
Usar str.join
:
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
-
No entendí, ¿qué se supone que es el ‘-‘ de la izquierda?
–Lawrence De Souza
02/04/2014 a las 23:46
-
@LawrenceDeSouza La cadena a la que desea unirse; ver el documentacióno esta respuesta que entra en un poco más de detalle.
– Burhan Jalid
6 de abril de 2014 a las 6:53
-
yo esperaba
sentence.join(" ")
para trabajar también, ya que la operación inversa eslist.split(" ")
. ¿Alguna idea de si esto se agregará a los métodos de Python para listas?– Wouter Thielen
23 de agosto de 2015 a las 10:02
-
@Wouter, no lo hará. Por un lado, solo se pueden unir listas de cadenas; asi que
list.join
sería inapropiado para una lista arbitraria. Por otro lado, el argumento destr.join
puede ser cualquier secuencia “iterable” de cadenas, no solo una lista. Lo único que tendría sentido es una función incorporadajoin(list, sep)
; hay uno en el (básicamente obsoleto)string
módulo si realmente lo quieres.– alexis
7 sep 2015 a las 22:28
-
@alexis Eso sí tiene sentido, que una lista de Python pueda contener elementos de tipos mixtos y que no siempre se pueda unir. ¡Gracias!
– Wouter Thielen
12 de septiembre de 2015 a las 7:09
aarón s
Una forma más genérica de convertir listas de Python en cadenas sería:
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str="".join(map(str, my_lst))
>>> print(my_lst_str)
12345678910
-
¿Por qué es necesaria la comprensión de la lista cuando la entrada es una cadena? además
map(str, my_lst)
seria suficiente sin enumerar la lista =)– alvas
1 de diciembre de 2015 a las 8:58
-
La mayoría de las respuestas a esta pregunta están considerando el caso cuando la lista tiene cadenas. La mía es una forma genérica de convertir listas en cadenas. En mi ejemplo, la lista es de tipo
int
pero podría ser cualquier tipo que pueda representarse como una cadena.– Aarón S.
2 de diciembre de 2015 a las 1:02
-
Para agregar a esto, el mapa también sería útil cuando se usa con una función lambda. Por ejemplo
' '.join(map(lambda x: ' $'+ str(x), my_lst))
volvería'$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'
– Scott McC
22 de junio de 2017 a las 3:17
-
agregar un mapa en realidad ayuda con los tipos de datos además de la cadena. ¡Excelente!
– chico manzana
28 de febrero de 2019 a las 7:55
Wallebot
Es muy útil para los principiantes saber por qué join es un método de cadena.
Es muy extraño al principio, pero muy útil después de esto.
El resultado de join es siempre una cadena, pero el objeto a unir puede ser de muchos tipos (generadores, lista, tuplas, etc).
.join
es más rápido porque asigna memoria solo una vez. Mejor que la concatenación clásica (ver, explicación extendida).
Una vez que lo aprendes, es muy cómodo y puedes hacer trucos como este para agregar paréntesis.
>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'
>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'
-
alguien puede explicar cual es el segundo
join()
es decirjoin(("(",")"))
¿lo hace? es como magia– cyanbhu
12 de noviembre de 2020 a las 7:17
-
("(",")")
es una tupla de dos cadenas – el paréntesis abierto"("
y el paréntesis de cierre")"
. Entonces el segundojoin()
une esas dos cadenas usando la salida de la primerajoin()
como el separador (es decir,'1,2,3,4,5'
).– zepman
18 de febrero de 2021 a las 16:47
-
¿Es esto correcto? “El resultado de unir siempre es una cadena, pero el objeto a unir puede ser de muchos tipos (generadores, lista, tuplas, etc.)”. La respuesta de Aaron S sugiere que esto no es cierto, debe usar map(str, ) si hay otros tipos en la lista.
– O´Rooney
28 de marzo a las 21:42
-
@O’Rooney la respuesta es decir que puedes
.join
listas, tuplas o generadores, que son diferentes tipos de colección, pero solo deben contener cadenas.– Boris Verjovskiy
16 ago a las 18:12
SilencioVacío
Editar desde el futuro: Por favor, no utilice la respuesta a continuación. Esta función se eliminó en Python 3 y Python 2 está muerto. Incluso si todavía está usando Python 2, debe escribir código listo para Python 3 para facilitar la inevitable actualización.
Aunque la respuesta de @Burhan Khalid es buena, creo que es más comprensible así:
from str import join
sentence = ['this','is','a','sentence']
join(sentence, "-")
El segundo argumento de join() es opcional y por defecto es ” “.
mounirboulwafa
list_abc = ['aaa', 'bbb', 'ccc']
string = ''.join(list_abc)
print(string)
>>> aaabbbccc
string = ','.join(list_abc)
print(string)
>>> aaa,bbb,ccc
string = '-'.join(list_abc)
print(string)
>>> aaa-bbb-ccc
string = '\n'.join(list_abc)
print(string)
>>> aaa
>>> bbb
>>> ccc
el hombre de hojalata
También podemos usar Python reduce
función:
from functools import reduce
sentence = ['this','is','a','sentence']
out_str = str(reduce(lambda x,y: x+"-"+y, sentence))
print(out_str)
el hombre de hojalata
Podemos especificar cómo unimos la cadena. En vez de '-'
nosotros podemos usar ' '
:
sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)