with - use list python




Che cosa fa esattamente il metodo.join()? (4)

Sono abbastanza nuovo per Python e sono completamente confuso da .join() che ho letto è il metodo preferito per concatenare le stringhe.

Provai:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring().join(strid)

e ottenuto qualcosa come:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5

Perché funziona così? Non dovrebbe essere aggiunto automaticamente il 595 ?


Fornendo questo come input,

li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)

Python restituisce questo come output:

'server=mpilgrim;uid=sa;database=master;pwd=secret'

Guarda attentamente il tuo risultato:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

Ho evidenziato il "5", "9", "5" della tua stringa originale. Il metodo join() Python è un metodo stringa e prende un elenco di cose da unire alla stringa. Un esempio più semplice potrebbe aiutare a spiegare:

>>> ",".join(["a", "b", "c"])
'a,b,c'

Il "," è inserito tra ogni elemento della lista data. Nel tuo caso, la tua "lista" è la rappresentazione della stringa "595", che viene considerata come la lista ["5", "9", "5"].

Sembra che tu stia cercando + invece:

print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

Per espandere un po 'di più ciò che gli altri stanno dicendo, se si volesse usare join per semplicemente concatenare le due stringhe, si farebbe questo:

strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring(), strid])

join () è per concatenare tutti gli elementi della lista. Per concatenare solo due stringhe "+" avrebbe più senso:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring() + strid




string