python - tuple - ¿Qué hace exactamente el método.join()?
python list to string with commas (6)
Al proporcionar esto como entrada,
li = [''server=mpilgrim'', ''uid=sa'', ''database=master'', ''pwd=secret'']
s = ";".join(li)
print(s)
Python lo devuelve como salida:
''server=mpilgrim;uid=sa;database=master;pwd=secret''
Soy bastante nuevo en Python y estoy completamente confundido por .join()
que he leído es el método preferido para concatenar cadenas.
Lo intenté:
strid = repr(595)
print array.array(''c'', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
y obtuve algo como:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
¿Por qué funciona así? ¿No debería el 595
simplemente anexarse automáticamente?
Mire cuidadosamente su resultado:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^ ^ ^
He resaltado el "5", "9", "5" de la cadena original. El método Python join()
es un método de cadena y toma una lista de elementos para unir con la cadena. Un ejemplo más simple podría ayudar a explicar:
>>> ",".join(["a", "b", "c"])
''a,b,c''
El "," se inserta entre cada elemento de la lista dada. En su caso, su "lista" es la representación de cadena "595", que se trata como la lista ["5", "9", "5"].
Parece que estás buscando +
lugar:
print array.array(''c'', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Para agregar una cadena, simplemente concatenarla con el signo +
.
P.ej
>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world
join
une las cadenas junto con un separador. El separador es lo que colocas justo antes de la join
. P.ej
>>> "-".join([a,b])
''Hello, -world''
Join toma una lista de cadenas como parámetro.
Para ampliar un poco más lo que otros dicen, si quisieras usar join para simplemente concatenar tus dos cadenas, harías esto:
strid = repr(595)
print ''''.join([array.array(''c'', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring(), strid])
join () es para concatenar todos los elementos de la lista. Para concatenar solo dos cadenas "+" tendría más sentido:
strid = repr(595)
print array.array(''c'', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
join
toma una cosa iterable como argumento. Por lo general, es una lista. El problema en su caso es que una cadena es iterable, dando a cada personaje uno por uno. Tu código se divide a esto:
"wlfgALGbXOahekxSs".join("595")
que actúa de la misma manera:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
y así produce su cadena:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
Las cadenas como iterables es uno de los problemas iniciales más confusos con Python.