random.sample restituisce solo caratteri anziché stringhe
-
05-07-2019 - |
Domanda
Questa è una specie di domanda da principiante, ma non sono riuscito a trovare una soluzione. Ho letto un elenco di stringhe da un file e provo a ottenere un campione casuale di 5 elementi con random.sample, ma l'elenco dei risultati contiene solo caratteri. Perché? Come posso ottenere un elenco casuale di stringhe?
Questo è quello che faccio:
names = random.sample( open('names.txt').read(), 5 )
print names
Questo dà un elenco di caratteri di cinque elementi come:
['\x91', 'h', 'l', 'n', 's']
Se ometto la parte random.sample e stampo l'elenco, stampa tutte le righe del file, che è il comportamento previsto, e dimostra che il file è letto OK.
Soluzione
Se i nomi sono tutti su righe separate, provare quanto segue:
names = random.sample(open('names.txt').readlines(), count)
print names
In sostanza stai sbagliando perché devi passare un interable a random.sample ()
. Quando passi una stringa, la tratta come una lista. Se i tuoi nomi sono tutti su una riga, devi utilizzare split ()
per separarli e passare l'elenco a random.sample ()
.