with tuple print commas python list string

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.